HDa*_*ave 24 database orm hibernate jpa constraints
当我使用maven-hibernate3-plugin(又名hbm2ddl)来生成我的数据库模式时,它会创建许多数据库约束,其中包含非常难以记住的约束名称FK7770538AEE7BC70.
有没有办法提供更有用的名称,如FOO_FK_BAR_ID?
如果是这样,它将使得更容易跟踪日志文件中的问题以及违规不会告诉您除约束名称之外的任何其他地方的问题.
Pio*_*hen 20
从JPA 2.1开始,可以为外键命名.例如
@ManyToOne
@JoinColumn(foreignKey=@ForeignKey(name="MY_FANCY_FK_NAME"))
Account account;
Run Code Online (Sandbox Code Playgroud)
只需确保它在@JoinColumn中使用.JavaDoc:https://docs.oracle.com/javaee/7/api/javax/persistence/ForeignKey.html#name%28%29
Pas*_*ent 15
Hibernate有一个@ForeignKey允许覆盖约束名称的注释.从参考文档:
2.4.6.集合相关的注释
(......)
由Hibernate生成的外键约束具有相当难以理解的名称.您可以使用覆盖约束名称
@ForeignKey.请注意,此注释必须放在关系的拥有方,并inverseName引用另一侧约束.Run Code Online (Sandbox Code Playgroud)@Entity public class Woman { ... @ManyToMany(cascade = {CascadeType.ALL}) @ForeignKey(name = "TO_WOMAN_FK", inverseName = "TO_MAN_FK") public Set<Man> getMens() { return mens; } } alter table Man_Woman add constraint TO_WOMAN_FK foreign key (woman_id) references Woman alter table Man_Woman add constraint TO_MAN_FK foreign key (man_id) references Man
但我不知道标准的JPA等价物.