如何防止 Spring Boot/Hibernate 将实体列名称从 PascalCase 转换为 snake_case?
How to prevent Spring Boot/Hibernate from converting entity column names from PascalCase to snake_case?
我今天偶然发现了一个奇怪的错误。 Java 引导应用程序中的我的 Java 持久性应用程序编程接口 (JPA) 实体之一无法正常工作。我将问题追踪到一个列:
@javax.persistence.Column(name = "NameWrittenInPascalCase")
java.lang.String c;
当我检查 Spring Boot/Hibernate 生成的结构化查询语言 (SQL) 查询时,我发现了问题。它接缝 Spring Boot 或 Hibernate 将 NameWrittenInPascalCase
转换为 name_written_in_pascal_case
(只是用蛇形写法)。 (在数据库中,当然,我的列名是用PascalCase写的)。
看在上帝的份上,为什么?
以及如何防止它这样做?
如果您需要其他信息,我使用 Spring 引导版本 2.5.7。
在你的项目application.properties
文件中设置命名策略:
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.EJB3NamingStrategy
默认值为org.springframework.boot.orm.jpa.SpringNamingStrategy
更新:
如果之前的 属性 没有解决您的问题,您可以使用这个(对于较新版本的 Hibernate):
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
我今天偶然发现了一个奇怪的错误。 Java 引导应用程序中的我的 Java 持久性应用程序编程接口 (JPA) 实体之一无法正常工作。我将问题追踪到一个列:
@javax.persistence.Column(name = "NameWrittenInPascalCase")
java.lang.String c;
当我检查 Spring Boot/Hibernate 生成的结构化查询语言 (SQL) 查询时,我发现了问题。它接缝 Spring Boot 或 Hibernate 将 NameWrittenInPascalCase
转换为 name_written_in_pascal_case
(只是用蛇形写法)。 (在数据库中,当然,我的列名是用PascalCase写的)。
看在上帝的份上,为什么?
以及如何防止它这样做?
如果您需要其他信息,我使用 Spring 引导版本 2.5.7。
在你的项目application.properties
文件中设置命名策略:
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.EJB3NamingStrategy
默认值为org.springframework.boot.orm.jpa.SpringNamingStrategy
更新:
如果之前的 属性 没有解决您的问题,您可以使用这个(对于较新版本的 Hibernate):
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl