java---联合主键--Annotation

annotation联合主键的方式有三种:1.将组建类注解为@Embeddable,并将组件的属性注解为@id;
2.将组件的属性注解为@EmbeddedId;
3.将类都注解为@IdClass,并将该实体中所有属于主键的属性都注解为@Id
一、第一种方法实现

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);

第一种方法用的比较少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值