我有以下问题,我有一个已经存在的表有三个字段field1,field2,field3。 Field1实际上是另一个表的外键( @OneToOne )。所有field2和field3都可以为null,因此我无法为所有三个字段设置主键。在数据库中,field1 + field2 + field3有一个UniqueConstraint。
field1 | field2 | field 3
1 | 1 | null
1 | null | 2
3 | 1 | null
我尝试过使用JPA / Hibernate的几个解决方案,但找不到好的解决方案。 没有定义 @Id JPA无法正常工作(当然)。在 @Embeddable 中定义三个字段并将其与 @EmbeddedId 一起使用会在所有三个不允许空值的字段上创建主键。
除了更改现有表并为每行添加自动生成的ID之外,还有其他解决方案吗?
非常感谢你&最好的问候!
答案 0 :(得分:0)
你试过如下吗?
@Table(
name="xxx",
uniqueConstraints=
@UniqueConstraint(name="my_unique_key", columnNames={"field1", "field2", "field3"})
)