为了账号安全,请及时绑定邮箱和手机立即绑定

如何在JPA中创建和处理复合主键

如何在JPA中创建和处理复合主键

慕容3067478 2019-10-08 10:06:47
我想要具有来自同一数据条目的版本。换句话说,我想用另一个版本号复制该条目。id - Version 将是主键。实体看起来如何?如何将其复制到另一个版本?id Version ColumnA1   0      Some data1   1      Some Other data2   0      Data 2. Entry2   1      Data
查看完整描述

3 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

您可以制作一个Embedded class,其中包含两个键,然后像EmbeddedId中一样引用该类Entity。


您将需要@EmbeddedId和@Embeddable注释。


@Entity

public class YourEntity {

    @EmbeddedId

    private MyKey myKey;


    @Column(name = "ColumnA")

    private String columnA;


    /** Your getters and setters **/

}

@Embeddable

public class MyKey implements Serializable {


    @Column(name = "Id", nullable = false)

    private int id;


    @Column(name = "Version", nullable = false)

    private int version;


    /** getters and setters **/

}

完成此任务的另一种方法是使用@IdClass批注,然后将两者都id放在该批注中IdClass。现在您可以@Id在两个属性上使用普通注释


@Entity

@IdClass(MyKey.class)

public class YourEntity {

   @Id

   private int id;

   @Id

   private int version;


}

public class MyKey implements Serializable {

   private int id;

   private int version;

}


查看完整回答
反对 回复 2019-10-08
?
DIEA

TA贡献1820条经验 获得超2个赞

MyKey类(@Embeddable)不应具有@ManyToOne之类的任何关系


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 883 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信