场景:
考虑需要存储多个版本的场景相同数据条目的数据,由 id 和 Version 列表示。目标是创建一个可以复制具有不同版本的条目的实体。
实体定义:
要定义具有复合主键的实体,您可以使用以下方法:
<code class="java">@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 }</code>
<code class="java">@Entity public class YourEntity { @EmbeddedId private MyKey myKey; @Column(name = "ColumnA") private String columnA; // Getters and setters }</code>
另一种方法:
或者,@IdClass 注解可用于定义复合主键。这种方法允许您直接在关键字段上使用 @Id 注释。
<code class="java">@Entity @IdClass(MyKey.class) public class YourEntity { @Id private int id; @Id private int version; // Getters and setters }</code>
<code class="java">public class MyKey implements Serializable { private int id; private int version; // Getters and setters }</code>
复制实体:
用不同的值复制实体version,创建一个具有相同 id 但版本值不同的新实例。这将在数据库中创建一个代表新版本的单独条目。
以上是如何在 JPA 中实现版本化数据条目的复合主键?的详细内容。更多信息请关注PHP中文网其他相关文章!