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 class="foreign">
            	<param name="property">identityCard</param>
            </generator>
        </id>
        <property name="personName" 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 class="assigned"/>
        </id>
        <property name="effectiveDate" 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属性用以添加外键约束。

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



 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值