hibernate基于主键的双向一对一
hibernate环境配置
实体类
public class IdCard {
private Integer id;
private String address;
private People people;
public People getPeople() {
return people;
}
public void setPeople(People people) {
this.people = people;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public IdCard() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "IdCard [id=" + id + ", address=" + address + "]";
}
}
public class People {
private Integer id;
private String name;
private IdCard idCard;
public Integer getId() {
return id;
}
public void setId(Integer 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;
}
public People(String name) {
super();
this.name = name;
}
public People(String name, IdCard idCard) {
super();
this.name = name;
this.idCard = idCard;
}
public People() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "People [id=" + id + ", name=" + name + "]";
}
}
映射文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.wd.pojo.IdCard" table="t_idcard">
<id name="id" column="id">
<generator class="identity"></generator>
</id>
<property name="address" column="address" length="50" ></property>
<one-to-one name="people"></one-to-one>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.wd.pojo.People" table="t_people">
<id name="id" column="id">
<generator class="identity"></generator>
</id>
<property name="name" column="name" length="50"></property>
<one-to-one name="idCard" constrained="true"></one-to-one>
</class>
</hibernate-mapping>
测试代码
public class HibernateTest {
@Test
public void testGet() {
Session session = null;
try {
session = HibernateUtil.getSession();
session.beginTransaction();
People people = (People) session.get(People.class, 1);
System.out.println(people.getIdCard());
System.out.println("---------------------");
IdCard idCard = (IdCard) session.get(IdCard.class, 2);
System.out.println(idCard);
session.getTransaction().commit();
} catch (Exception e) {
session.getTransaction().rollback();
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}
}