实体应该是什么样子的?我如何用另一个版本复制它?
id Version ColumnA
1 0 Some data
1 1 Some Other data
2 0 Data 2. Entry
2 1 Data
您可以创建一个包含两个键的嵌入类
,然后在实体
中以embeddedId
的形式引用该类。
您需要@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;
}
问题内容: 我想要具有来自同一数据条目的版本。换句话说,我想用另一个版本号复制该条目。 将是主键。 实体看起来如何?如何将其复制到另一个版本? 问题答案: 你可以制作一个,其中包含两个键,然后像中一样引用该类Entity。 你将需要和注释。 完成此任务的另一种方法是使用@IdClass批注,然后将两者都id放在该批注中IdClass。现在你可以@Id在两个属性上使用普通注释
问题内容: 这是我正在使用的密集设置的过度简化。并且都具有自动增量代理主键作为ID。是包含有关和的信息的表。 我试图决定,如果我应该做的主键的复合ID的距离和。如果我要这样做,哪一个最有意义? (在此示例中,我将ID 11209与ID 437组合在一起) 11209437 (我可以想象为什么这很糟糕) 11209-437 11209.437 或者是其他东西? 将其用作MYSQL MYISAM DB
问题内容: 我的JPA模型中有以下类(省略了getters,setters和无关字段): 我需要定义一个类,使得当从所述类生成DDL时,相应的表的主键被由密钥和。我尝试了以下方法: 但这会为表生成以下内容: 请注意,和都是可为空的,当我尝试将DDL加载到SQL Server时会导致以下错误 无法在表“ PRICE”中的可为空的列上定义PRIMARY KEY约束 我不明白为什么这些可以为空,因为在域
EmbeddedId或IdClass注释用于表示复合主键。如何在没有(EmbeddedId或IdClass)的情况下使用复合主键? 如果可以在没有(EmbeddedId或IdClass)的情况下使用复合主键,那么如何使用EntityManager.find(Entity Class,Object primaryKey)方法在复合主键(Multiple primaryKey)的情况下查找实体(因为没
我为这个特殊的问题找了很多,但我没有找到任何具体的解决办法。我在一个表中有一个复合主键,这个复合主键的一个字段是另一个表的复合主键的一部分。您可以说这个特定的字段是第二个表中的外键,但是在表定义中没有定义任何独占外键约束。对于第一个表中的每个rec,第二个表中可能有多条记录。我试图使用SPringBoot-JPA-Hibernate实现这一点,但无法实现。有人能帮我吗。以下是德泰:- 我有一个US
我有一个JPA实体的类层次结构,基类是定义了一个ID的MappedSuperclass。我试图在子类中使用复合键,但这似乎不起作用