使用 JPA 进行复合主键处理
数据版本控制需要能够复制具有不同版本的实体,因此创建组合至关重要实体的主键。
使用复合主键的实体定义
在 JPA 中,可以使用 @EmbeddedId 或 @IdClass 注释来定义复合主键。
使用@EmbeddedId
为key单独定义一个类(@Embeddable注解),然后在实体中用@EmbeddedId注解:
<code class="java">@Entity public class YourEntity { @EmbeddedId private MyKey myKey; private String columnA; // getters and setters } @Embeddable public class MyKey implements Serializable { private int id; private int version; // getters and setters }</code>
使用@IdClass
或者,使用@IdClass注释类,并在类中将ID属性定义为@Id:
<code class="java">@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; }</code>
复制具有版本的实体
定义实体后,可以使用新版本复制它。例如,要创建 id=1 的第一个实体的新版本:
<code class="java">YourEntity newVersion = new YourEntity(); newVersion.setMyKey(new MyKey(1, 1)); // new version newVersion.setColumnA("Some Other Data"); entityManager.persist(newVersion);</code>
以上是如何在JPA中使用复合主键实现数据版本控制?的详细内容。更多信息请关注PHP中文网其他相关文章!