除非明确指定,否则如何通过默认命名从camelCase到snake_case使Spring Data JPA?

sp0*_*00m 5 java naming hibernate spring-data-jpa spring-boot

默认情况下,我的 Spring Boot 项目通过将名称从camelCase 转换为snake_case(例如from fooBarto foo_bar)来将实体属性映射到表列。

我正在处理现有的数据库,其中实体属性名称保留为表列名称(例如 from fooBarto fooBar),因此我尝试使用@Column注释显式指定名称:

@Column(name = "fooBar")
private String fooBar;
Run Code Online (Sandbox Code Playgroud)

这是行不通的。我遵循了这里给出的建议:

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

@Column现在已成功考虑在内,但我在没有@Column注释的属性上丢失了camelCase到snake_case的隐式转换。

除非在@Column注释中明确指定,否则知道默认情况下如何从camelCase 转换为snake_case吗?

小智 0

从 Hibernate 5 开始,似乎不再支持使用驼峰命名法(Java 中的命名约定)将属性名称自动转换为 SNAKE_CASE。但是,您可以编写自己的 NamingStrategy 实现,完全做到这一点。请检查此 Stackoverflow-Answer以了解它是如何完成的。