如何更改 JPA 生成的列名的默认格式

Posted

技术标签:

【中文标题】如何更改 JPA 生成的列名的默认格式【英文标题】:How to change the default format of JPA generated column names 【发布时间】:2014-12-24 14:25:46 【问题描述】:

目前我正在将新的 JPA 实体映射到旧数据库。数据库中的列名具有以下划线分隔的列名,例如“my_column_name”。

问题在于 JPA 默认使用驼峰式大小写。

// Will be 'myColumnName' in queries and generated databases
private String myColumnName;

我知道可以在属性上添加 @Column(name="..") 或 @JoinColumn(name="...") - 但这意味着我必须将其添加到所有实体中的每个属性.

@Column(name = "my_column_name")
private String myColumnName;

是否可以将 JPA 的默认行为更改为使用“my_column_name”而不是“myColumnName”?

【问题讨论】:

【参考方案1】:

将以下行添加到您的 application.properties 中:

spring.jpa.hibernate.naming.implicit-strategy=
   org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy=
   org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

根据以下链接,我进行了测试,并且成功了:

Spring Boot + JPA : Column name annotation ignored

【讨论】:

【参考方案2】:

很遗憾,JPA 不提供任何全局命名策略。因此,您应该在每个属性上使用 @Column 注释。但是您可以使用 Hibernate 来实现这个目标。见Hibernate documentation。

【讨论】:

【参考方案3】:

你需要调查Implementing a NamingStrategy

【讨论】:

只能在 Hibernate 中工作,他还把它标记为 OpenJPA

以上是关于如何更改 JPA 生成的列名的默认格式的主要内容,如果未能解决你的问题,请参考以下文章