<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方法.............
}