JPA /休眠 - 使用唯一约束作为主键
问题描述:
我有以下问题,我有一个已经存在的表有三个字段field1,field2,field3。 Field1实际上是一个外键(@OneToOne)到另一个表。所有field2和field3都可以为空,所以我不能为所有三个字段设置主键。在数据库中有一个Field1 + field2 + field3的UniqueConstraint。JPA /休眠 - 使用唯一约束作为主键
field1 | field2 | field 3
1 | 1 | null
1 | null | 2
3 | 1 | null
我试过JPA /休眠的几个解决方案,但找不到一个好的。 没有定义@Id JPA无法工作(当然)。定义@Embeddable中的三个字段并将其与重复使用@EmbeddedId在不允许空值的所有三个字段上创建主键。
是否有任何其他解决方案,而不是改变现有的表,并为每一行添加一个自动生成的ID?
非常感谢你&最好的问候!
答
你试过了吗?
@Table(
name="xxx",
uniqueConstraints=
@UniqueConstraint(name="my_unique_key", columnNames={"field1", "field2", "field3"})
)
什么是Field2,Field3用于?他们是否在另一张桌子上?请注意,Field1与父表具有ManyToOne关系,id 1在那里有两次。 –