一对一关联关系此处通过一个人对应一个身份证,此处身份证类中的id不是通过自动生成,
而是从person表中获取person表中对应的id,表的设计如下:
person表:
PK | id |
name age |
card表:
PF,FK1 | id |
useful_life |
人类 (Person):
public class Person { private int id ; private String name ; private Card card ; // 身份证类 .../getter/setter }
身份证类 (Card):
public class Card { private int id ; private String name ; private Person person ; // 同样此处包含一个人对象 ...getter/setter }
人类的配置文件 (Person.hbm.xml):
......... <class name="Person" table="person"> <id name="id"> <generator class="native"/> </id> <property name="name" /> <one-to-one name="card"/> // name的值对应Person类中的那个对象名称 </class> .........
身份证类的配置文件 (card.hbm.xml):
...... <class name="Card" table="card"> <id name="id"> <generator calss="foreign"> <param name="property">person</param> // 此处的id是通过外键的方式获取,即通过person的getID方法赋值 </generator> </id> <property name="name"/> <one-to-one name="person"/> // 同样对应Card类中的person对象名称 </class> ......
测试代码,首先添加一个身份证号,然后添加人的信息,代码如下:
// 省略Hibernate代码 Card car = new Card () ; car.setName ("card name") ; Person person = new Person () ; person.setName ("p1") ; person.setCard (card) ; // 设置了此人的身份证 car.setPerson (person) ; // 设置此身份证是哪个人的
s.save (person) ;
s.save (card) ;