实体Person和Address为一对一关联关系,下面实例采用主键双向关联。
Person.java
package cn.qeli.ums.entity;
public class Person {
private String pid;
private String name;
private String sex;
private Address address;
public Person() {
super();
}
public Person(String name, String sex) {
super();
this.name = name;
this.sex = sex;
}
getter和setter方法省略...
}
Person.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.qeli.ums.entity.Person" table="persons">
<id name="pid" column="pid" length="32" >
<generator class="uuid.hex"></generator>
</id>
<property name="name" length="20" />
<property name="sex" length="4" />
<one-to-one name="address" />
</class>
</hibernate-mapping>
Address.java
package cn.qeli.ums.entity;
public class Address {
private String aid;
private String zhuzhi;
private String postcode;
private Person person;
public Address() {
super();
}
public Address(Person person, String zhuzhi, String postcode) {
super();
this.person = person;
this.zhuzhi = zhuzhi;
this.postcode = postcode;
}
getter和setter方法省略...
}
Address.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.qeli.ums.entity.Address" table="addresses">
<id name="aid" column="aid" length="32" >
<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
<property name="zhuzhi" length="100" />
<property name="postcode" length="6" />
<one-to-one name="person" />
</class>
</hibernate-mapping>
<id name="aid" column="aid" length="32" >中,name的那个aid匹配Address类的域aid。column为创建的addresses表的主键列。
测试代码:
package cn.qeli.ums.UTest;
import org.hibernate.Session;
import cn.qeli.ums.HibernateSessionFactory;
import cn.qeli.ums.entity.Address;
import cn.qeli.ums.entity.Person;
public class PersonTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
PersonTest pt = new PersonTest();
pt.addPerson();
// pt.addAddress();
}
public void addAddress() {
Session s = HibernateSessionFactory.getSession();
s.beginTransaction();
Person per = (Person) s.get("cn.qeli.ums.entity.Person",
"402881e7395bc4ba01395bc4bcce0000");
Address add = new Address(per, "金阳路86号", "420000");
s.save(add);
s.getTransaction().commit();
}
public void addPerson() {
Session s = HibernateSessionFactory.getSession();
s.beginTransaction();
Person per = new Person("yj", "女");
s.save(per);
s.getTransaction().commit();
}
}