Hibernate JoinColumn默认名称缺少“_id”

3
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn (name = "account_id")
private Account account;

运行正常。

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn
private Account account;

结果为:异常:在SomeSchema.SomeOwnerTable中缺少列帐户

JPA规范指出,默认联接列名称为

property name ( 'account') + '_' + target table primary key ( 'id' )

但看起来hibernate只是搜索名为'account'的属性而不是'account_id'。

有任何评论吗?

1个回答

4

我认为你可以安全地删除 @JoinColumn 注解 - 不管怎样都会有一个连接列。

此外,请确保你没有配置特定的命名策略,否则可能会覆盖默认行为。


1
我正在使用ImprovedNamingStrategy。ImprovedNamingStrategy将Account转换为account,accountId转换为account_id。 - drypot
4
改进的命名策略是问题所在。谢谢您。http://matthew.mceachen.us/blog/hibernate-naming-strategies-20.html - drypot
1
ImprovedNamingStrategy 对我也是个问题。@drypot 的博客文章参考对我有用。 - Jamie McCrindle
1
@drypot的链接已经失效了,这篇文章还能看到吗? - Sandro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接