JPA:@OneToOne 使用随机生成的名称创建隐式唯一约束。有什么方法可以使用注释在代码中指定该名称吗?

Cer*_*nly 3 java hibernate jpa constraints

在 Java 类中,我有这个属性

@OneToOne(optional = false, fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
private MyPropertyClass myProperty;
Run Code Online (Sandbox Code Playgroud)

这不仅创建了外键约束,而且还创建了唯一约束。这是 Hibernate DDL 架构输出:

Hibernate: create table [...]
Hibernate: alter table [...] add constraint UK_nk1hqjkd7ln1f9a2pju1yy8ay  unique (myProperty)
Run Code Online (Sandbox Code Playgroud)

没有办法指定唯一约束的名称?

JPS*_*JPS 5

请尝试类级别uniqueConstraints的注释属性。@Table

@Table( name ="tablename " , uniqueConstraints={
       @UniqueConstraint(name="myconst", columnNames={"myProp"})
   })

public class MyEntity {

@OneToOne(fetch = FetchType.EAGER, cascade =     CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name="myProp")
private MyPropertyClass myProperty;

}
Run Code Online (Sandbox Code Playgroud)