java - 除非明确指定,否则如何默认将 Spring Data JPA 从 camelCase 命名为 snake_case?

标签 java hibernate spring-boot spring-data-jpa naming

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

我正在处理一个现有的数据库,其中实体属性名称保留为表列名称(例如从 fooBarfooBar),所以我尝试使用 @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/

相关文章:

java - 用随机字符 java 替换具有最小指定 ASCII 数字的字符

spring - 尝试通过 websocket 转换和发送时出现空指针异常

java - Primefaces数据表延迟加载分页行数显示错误

mysql - Spring Boot JPA MySQL : Failed to determine a suitable driver class

java - 如何将 H2 DB 用于同一应用程序的多个实例

java - 将两个数组放在一起

java - 如何在同一个网页中的小程序之间共享数据?

java - Spring Boot 示例文件未找到错误

java - 获取 LiveData 的初始值总是返回 Null

java - Hibernate 左连接使用 with