Hibernate JoinColumn 默认名称缺失 '_id'

标签 hibernate jpa

@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”。

有什么意见吗?

最佳答案

我认为您可以安全地删除 @JoinColumn 注释 - 无论如何都有一个连接列。

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

关于Hibernate JoinColumn 默认名称缺失 '_id',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3818797/

相关文章:

java - 将 HQL 'in' 限制转换为条件

java - Hibernate孤儿移除-事务隔离级别

java - 在 JPA 中过滤引用实体数据

jpa - 查询异常 : Object comparisons can only use the equal() or notEqual() operators

java - JPA/Eclipselink如何处理循环/循环关系

java - hibernate/jpa 元模型类不包含所有字段

java - hibernate JPA 2.1 : OUT REF CURSOR in position other than first?

java - 将 @ElementCollection 映射到同一个表

java - 如何将spring MVC jsp页面绑定(bind)到两个类

java - Hibernate 关联对象的标准