一对一外键关联使用的是多对一关联策略,只是在多的一端外键上添加一个unique约束来实现一对一
实体类:
package com.chris.entity;
/**
* 人
* @author Administrator
*
*/
public class Person {
private int id;
private String name;
private IDCard idCard;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public IDCard getIdCard() {
return idCard;
}
public void setIdCard(IDCard idCard) {
this.idCard = idCard;
}
}
package com.chris.entity;
/**
* 身份证
* @author Administrator
*
*/
public class IDCard {
private int id;
private String cardNo;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCardNo() {
return cardNo;
}
public void setCardNo(String cardNo) {
this.cardNo = cardNo;
}
}
映射文件:
Person.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.chris.entity"> <class name="Person"> <id name="id"> <generator class="native" /> </id> <property name="name" /> <many-to-one name="idCard" class="IDCard" column="idCard_id" unique="true" not-null="false" /> </class> </hibernate-mapping>
IDCard.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.chris.entity"> <class name="IDCard"> <id name="id"> <generator class="native"/> </id> <property name="cardNo"/> </class> </hibernate-mapping>