我对 hibernates(5.1 版)命名策略有点困惑——即它改变了我的表名,我想避免这种情况。另外 - spring.jpa.hibernate.naming_strategy
根据 intelij 似乎已弃用,但我找不到正确配置它的(另一种)方法。
我在 application.properties 中有以下配置:
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
spring.jpa.properties.hibernate.current_session_context_class=thread
如前所述,第一个被标记为堕落。
现在我有一个实体:
@Entity
@Table(name = "usaUploadTable", schema = "usertable201", catalog = "")
public class UsaUploadTable {
....
}
表名是 @Table(name = "")
usaUploadTable。
现在当我运行我的应用程序时,我得到
表 ‘usertable201.usa_upload_table’ 不存在
这是正确的——它的命名不像休眠如何改变它。
我该怎么做才能让 hibernate 正确使用我的表名?
编辑:
我也试过
DefaultNamingStrategy
ImprovedNamingStrategy
他们都改变它
版本:
spring-boot-1.4.0.RELEASE
hibernate 5.1
javax-transaction-api 1.2
hibernate-validator 5.2.4
javassist 3.20
原文由 user5181073 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题出在 spring-boot-1.4 - 似乎他们已经更改了属性(或其他)我现在发现这个答案 ImprovedNamingStrategy no longer working in Hibernate 5 ,但它仍然没有正确解析。所以我稍微更改了代码以不使用下划线方法并扩展新引入的类
SpringPhysicalNamingStrategy
:在
application.properties
我已将弃用的行更改为现在它完全使用我在实体文件中使用的表名和列名。