【发布时间】:2017-03-27 15:51:04
【问题描述】:
对于我的 JPA 实体,我总是用 @Table 和 @Column 注释所有内容我不希望 Hibernate 猜测表或列的名称应该是什么。我希望 Hibernate 使用我的代码中的内容。
我有一个具有以下字段映射的实体
@Column(name = "isPrimary")
private Boolean isPrimary;
使用 Hibernate 4.x 生成的 sql 查询会将列名列为 isprimary 但是当我升级我的应用程序以使用 SpringBoot 1.4 从没有 SpringBoot 的传统 .war 时。 Hibernate 5 开始使用is_primary 作为它生成的查询中的列名,这导致了异常,因为数据库列被称为isprimary 而不是is_primary
我将我的@Column(name = "isPrimary") 更改为@Column(name = "isprimary"),Hibernate 5 重新正确生成列名。
我对 JPA 的理解是,如果您设置了 @Column,那么 JPA 提供者应该尊重这一点,并且不要混淆注释中的名称。
- 我对 JPA 的理解正确吗?
- 为什么 Hibernate 更改名称?
【问题讨论】:
-
检查命名策略,这个接口通常是解决此类问题的方法
-
您对 JPA 规范的理解是正确的。如果 Hibernate 即使在您指定了名称后仍然使用该名称,那么 Hibernate 有一个“问题”
标签: java spring hibernate jpa orm