annotation联合主键的方式有三种:
一、第一种方法实现
1.新建TeacherPK类,
@embeddable
public class TeacherPK implements java.io.Serializable{
private int id;
private String name;
.......如同studentpk类,也要实现equals和hashcode方法。
2.在Teacher类中,加入TeacherPK字段,同样生成该字段的get和set方法。
private TeacherPK pk;
@ID
public TeacherPK getPK(){
}
public void setPK(TeacherPK pk){
{
3.测试代码见1.9的studentpk测试方法,一样的。
TeacherPK pk = new TeacherPK();
pk.setId(1);
pk.setName("zhangsan");
Teacher t = new Teacher();
t.setPk(pk);
t.setAge(8);
二、第二种方法实现
1.同上述建立TeacherPK类,和在Teacher类中加入pk字段及其get、set方法。注解都不要。
2.在Teacher类中,加入TeacherPK字段,同样生成该字段的get和set方法。
private TeacherPK pk;
@EmbeddedID
public TeacherPK getPK(){
}
3.测试方法同上
三、第三种方法实现1.同上述建立TeacherPK类,但是在Teacher类中不需要加入TeacherPK字段,teacher类中仍然保留id和name的字段,如下:
@ID
public String getID(){
}
@ID
public String getName(){
}
2.在teacher类中的id和name的get方法上面分别加上@ID,在teacher类表头
@IDclass(value=TeacherPK)
public class Teacher{{
}
3.测试方法
Teacher t = new Teacher();
t.setid(15)
t.setname("liu")
t.setPk(pk);
t.setAge(8);
第一种方法用的比较少。