hibernate的关联关系----一对一单向关联之主键关联

一对一单向关联:

husband 实体类:
public class Husband implements Serializable{
	private Long id;
	private String name;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
wife实体类:
public class Wife implements Serializable{
	private Long id;
	private String name;
	private Husband husband;
	public Husband getHusband() {
		return husband;
	}
	public void setHusband(Husband husband) {
		this.husband = husband;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

 

关联关系:

husband hbm:
<hibernate-mapping>
<class name="com.model.o2o.pk.Husband" table="t_husband" schema="yang">
    <id name="id" column="id">
        <generator class="native"/>
    </id>
    <property name="name" type="string">
    	<column name="name"/>
    </property>
</class>
</hibernate-mapping>
wife hbm:
<hibernate-mapping>
	<class name="com.model.o2o.pk.Wife" table="t_wife" schema="yang">
		<id name="id" type="java.lang.Long">
			<column name="ID" scale="0" />
			<generator class="sequence" />
		</id>
		<property name="name" type="java.lang.String">
			<column name="name" not-null="true" />
		</property>
		 <one-to-one name="husband" constrained="true"/>
	</class>
</hibernate-mapping>

sql语句: 

drop table yang.t_husband cascade constraints
drop table yang.t_wife cascade constraints
drop sequence hibernate_sequence
create table yang.t_husband (id number(19,0) not null, name varchar2(255 char), primary key (id))
create table yang.t_wife (ID number(19,0) not null, name varchar2(255 char) not null, primary key (ID))
alter table yang.t_wife add constraint FKCB648FFCB0454FF7 foreign key (ID) references yang.t_husband
create sequence hibernate_sequence 

这是hibernate一对一关联关系的一种--主键关联(它的一个明显的特征是使用 <one-to-one name="husband" constrained="true"/>):
也就是说根据该条sql语句生成的表之间存在一种潜在的关联关系:
alter table yang.t_wife add constraint FK37AF11B0454FF7 foreign key (ID) references yang.t_husband
说明t_husband表是主表,t_wife表是子表
它们之间的关系是主外键关系
只有当t_husband表中的id列有数据的时候,对应t_wife表中才能有相应的id列的数据 

猜你喜欢

转载自gaoquanyang.iteye.com/blog/1074179