默认情况下,我的 Spring Boot 项目通过将名称从 camelCase 转换为 snake_case(例如,从 fooBar
到 foo_bar
)将 JPA 实体属性映射到表列。
我正在处理一个现有的数据库,其中实体属性名称保留为表列名称(例如从 fooBar
到 fooBar
),所以我尝试使用 @Column
注释来显式指定名称:
@Column(name = "fooBar")
private String fooBar;
这是行不通的。我听从了给出的建议 here :
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
我的 @Column
现在已成功考虑,但我正在丢失对没有 @Column
的属性的 camelCase 到 snake_case 隐式转换注释。
知道如何在默认情况下从 camelCase 转换为 snake_case,除非在 @Column
注释中明确指定吗?
最佳答案
当我为我的 H2 和 postgres 存储库注入(inject)自定义 spring 数据源 bean 时,转换为 snake case 的默认 JPA 行为不知何故不起作用。我想在将对象保存到数据库时默认将驼峰大小写转换为蛇形大小写,而无需显式注释列。因此在 application.properties 中添加以下属性对我有用:
spring.jpa.properties.hibernate.physical_naming_strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy
注意:我使用的是spring boot 2.6.2版本
关于java - 除非明确指定,否则如何默认将 Spring Data JPA 从 camelCase 命名为 snake_case?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50858718/