`

Hibernate一对一的关联关系

阅读更多

 

一对一关联关系此处通过一个人对应一个身份证,此处身份证类中的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) ;

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics