读书人

Hibernate 一对一主键联系关系映射

发布时间: 2012-08-21 13:00:21 作者: rapoo

Hibernate 一对一主键关联映射

Hibernate one-to-one主键关联映射将两个关联对象的主键保持一致,因而关联在一起。

?

Person类

public class Person {private String id;private String personName;private String sex;private Date birthday;private IdentityCard identityCard;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getPersonName() {return personName;}public void setPersonName(String personName) {this.personName = personName;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public IdentityCard getIdentityCard() {return identityCard;}public void setIdentityCard(IdentityCard identityCard) {this.identityCard = identityCard;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}}

?

IdentityCard类

public class IdentityCard {private String cardNum;private Date effectiveDate;private Person person;public String getCardNum() {return cardNum;}public void setCardNum(String cardNum) {this.cardNum = cardNum;}public Date getEffectiveDate() {return effectiveDate;}public void setEffectiveDate(Date effectiveDate) {this.effectiveDate = effectiveDate;}public Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;}}

?

Person类的映射文件

<hibernate-mapping>    <class name="com.woo.demo.hibernate.domain.Person" table="PERSON">        <id name="id" type="string">            <column name="ID" />            <generator column="person_name" type="string" length="128" not-null="true"/>        <property name="sex" type="string" column="sex" length="1" not-null="true"/>        <property name="birthday" column="birthday" type="date"/><one-to-one name="identityCard" cascade="all" constrained="true"/>    </class></hibernate-mapping>

?

IdentityCard映射文件

<hibernate-mapping>    <class name="com.woo.demo.hibernate.domain.IdentityCard" table="IDENTITYCARD">        <id name="cardNum" column="card_num" type="string" length="32">            <generator column="effective_date" type="date"/>        <one-to-one name="person"></one-to-one>    </class></hibernate-mapping>

?

? Person类使用IdentityCard的cardNum字段作为外键ID, 在配置时将Person类的主键生成形式设为foreign,然后传入param参数。这样Person类就会利用IdentityCard类的主键做为主键。

在one-to-one标签上加constrained属性用以添加外键约束。

主键关联映射之后的表结构:


Hibernate 一对一主键联系关系映射
?

Hibernate 一对一主键联系关系映射

两表通过相同的主键进行关联。

读书人网 >软件架构设计

热点推荐