如何防止Spring Boot/Hibernate将实体列名从PascalCase转换为snake_case?

KRI*_*INI 9 java sql entity hibernate spring-boot

今天我偶然发现了一个奇怪的错误。Spring Boot 应用程序中的 Java 持久性应用程序编程接口 (JPA) 实体之一无法正常工作。我将问题归结为一列:

@javax.persistence.Column(name = "NameWrittenInPascalCase")
java.lang.String c;
Run Code Online (Sandbox Code Playgroud)

当我检查 Spring Boot/Hibernate 生成的结构化查询语言 (SQL) 查询时,我发现了问题。看来 Spring Boot 或 Hibernate 将其转换NameWrittenInPascalCasename_written_in_pascal_case(只是用蛇形写法编写)。(当然,在数据库中,我的列名是用PascalCase写的)。

看在上帝的份上,为什么?

以及如何防止它这样做?

如果您需要其他信息,我使用 Spring Boot 版本 2.5.7。

Meh*_*imi 8

在您的项目application.properties文件中设置命名策略:

spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.EJB3NamingStrategy
Run Code Online (Sandbox Code Playgroud)

默认值为org.springframework.boot.orm.jpa.SpringNamingStrategy


更新:

如果上一个属性不能解决您的问题,您可以使用这个(对于较新版本的Hibernate):

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
Run Code Online (Sandbox Code Playgroud)

  • 试试这个属性 `spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl` @KRISTIJANTOMASINI (3认同)
  • 这解决了它!非常感谢。您能否更新您的答案,以便我可以接受它并给您带来声誉? (2认同)