读书人

hibernate 一对一外键联系关系映射

发布时间: 2012-09-13 09:51:53 作者: rapoo

hibernate 一对一外键关联映射

?

Hibernate 一对一外键关联映射需要使用<many-to-one>标签达到目的。关系数据库会在many的一方增加一个关联字段,也就是外键。

?

JAVA类:

?

public class Person1 {private String id;private String personName;private String sex;private Date birthday;private IdentityCard1 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 IdentityCard1 getIdentityCard() {return identityCard;}public void setIdentityCard(IdentityCard1 identityCard) {this.identityCard = identityCard;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@Overridepublic String toString(){return this.id+"---"+this.getPersonName()+"---"+this.getSex()+"---"+this.getIdentityCard().getCardNum()+"---"+this.getIdentityCard().getEffectiveDate();}}public class IdentityCard1 {private String cardNum;private Date effectiveDate;private Person1 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 Person1 getPerson() {return person;}public void setPerson(Person1 person) {this.person = person;}}

?

映射文件:
<hibernate-mapping>    <class name="com.woo.demo.hibernate.domain.Person1" table="PERSON1">        <id name="id" type="string">            <column name="ID" />        <generator column="person_name" type="string" length="128" not-null="true" update="false"/>        <property name="sex" type="string" column="sex" length="1" not-null="true" update="false"/>        <property name="birthday" column="birthday" type="date"/><many-to-one name="identityCard" column="identity_card" cascade="save-update" unique="true" lazy="false"/>    </class></hibernate-mapping><hibernate-mapping>    <class name="com.woo.demo.hibernate.domain.IdentityCard1" table="IDENTITYCARD1">        <id name="cardNum" column="card_num" type="string" length="32">            <generator column="effective_date" type="date"/>        <one-to-one name="person"/>    </class></hibernate-mapping>

?

外键关联也可以采用单向关联,单向关联时将IdentityCard中的one-to-one标签删掉,这样IdentityCard实体就不会维护映射关系,查询IdentityCard实体,从中获取Person对象时,为null值。

?

数据库结构


hibernate 一对一外键联系关系映射

读书人网 >软件架构设计

热点推荐