java - Spring Boot + JPA : Column name annotation ignored

标签 java hibernate jpa spring-boot

我有一个依赖 spring-boot-starter-data-jpa 的 Spring Boot 应用程序。我的实体类有一个带有列名的列注释。例如:

@Column(name="TestName")
private String testName;

由此创建的 test_name 生成的 SQL 作为列名。在寻找解决方案后,我发现 spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy 解决了问题(列名取自列注释)。

不过,我的问题是,为什么没有将命名策略设置为 EJB3NamingStrategy JPA 会忽略列注释?也许hibernate方言与它有关?我正在连接到 MS SQL 2014 Express,我的日志包含:

Unknown Microsoft SQL Server major version [12] using SQL Server 2000 dialect
Using dialect: org.hibernate.dialect.SQLServerDialect 

最佳答案

对于 Hibernate 5,我通过在 application.properties 文件中添加以下行解决了这个问题:

spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

关于java - Spring Boot + JPA : Column name annotation ignored,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25283198/

相关文章:

java - PostgreSQL:BYTEA vs OID+大对象?

java - 关系表的 Spring JPA Repository 查询过滤器

java - hibernate - 选择/仅加载字段

java - 如何让JavaScript使用服务器端的变量?

java - 预先计算离屏组件尺寸?

java - 事件在 Java Swing 中是如何工作的?

java - 在Spring MVC中将复选框值插入数据库

java - JPA查询问题

java - 有什么方法可以让 JPA 更快地持久化对象吗?

JavaFX 动态 TableView 不显示数据库中的数据