一对一单向关联:
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列的数据