gpt4 book ai didi

java - JPA/Hibernate - 使用唯一约束作为主键

转载 作者:太空宇宙 更新时间:2023-11-04 12:51:43 27 4
gpt4 key购买 nike

我有以下问题,我有一个已经存在的表,其中包含三个字段field1、field2、field3。 Field1 实际上是另一个表的外键 (@OneToOne)。所有field2和field3都可以为空,因此我无法为所有三个字段设置主键。数据库中有一个针对field1+field2+field3的UniqueConstraint。

field1 | field2 | field 3
1 | 1 | null
1 | null | 2
3 | 1 | null

我已经尝试了几种使用 JPA/Hibernate 的解决方案,但找不到一个好的解决方案。如果不定义 @Id JPA 就无法工作(当然)。在 @Embeddable 中定义三个字段并与 @EmbeddedId 一起重用它,会在所有三个字段上创建一个主键(不允许空值)。

除了更改现有表并为每行添加自动生成的 ID 之外,还有其他解决方案吗?

非常感谢您并致以最诚挚的问候!

最佳答案

您是否尝试过以下方法?

@Table(
name="xxx",
uniqueConstraints=
@UniqueConstraint(name="my_unique_key", columnNames={"field1", "field2", "field3"})
)

关于java - JPA/Hibernate - 使用唯一约束作为主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35770544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com