hibernate映射联合主键

<class name="com.modle.Student">

<!--映射联合主键用composite-id标签,联合主键要单独写一个类;studentNo和name 作为表的联合主键-->

  <composite-id name="id" class="com.modle.StudentPK">
<key-property name="studentNo"/>
<key-property name="name"/>
</composite-id>
<property name="age"/>


</class>


Student类:

public class Student{

private StudentPK  pk;

private int age;


get方法....

set方法....

}

联合主键类必须序列化

public Class StudentPK implements Serializable{

private int studentNo;

private String name


get set方法.........

//必须实现equals、hashcode

@override

public boolean equals(Object o){

     if(o instanceof StudentPK){

            StudentPK pk=(StudentPK) o;

            if(this.id==pk.id&&this.name.equals(pk.name)){

                    return true;

             }

      }

      return false;

}


@override

public int hashCode(){

       return this.name.hashCode();

 }

}



annotation映射联合主键的3中方式:

@IdClass(TeacherPK.Class)----------方式3

public class Teacher{

     @Id-------------------------方式1

     @EmbeddedId----------------方式2

    private TeacherPK pk;---------方式3去掉此处

     @Id

     private int tNo;-------------------方式3

     @Id

     private string name;------------方式3

 

    private String title;

   get 

  set方法.......

}


主键类:

@Embeddale --------------方式1

public class TeacherPK implements Serializable{

     private int tNo;

     private string name;

      get   set 方法.......

      equals hashCode方法.............

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值