如何更改 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 生成的列名的默认格式的主要内容,如果未能解决你的问题,请参考以下文章

JPA - EclipseLink - 如何更改默认模式

JPA:@ManyToOne 关系的默认列名映射

如何更改OS系统下截图生成图片格式 jpg pdf

如何将更新的列名从 HandsOnTable 传递到 Shiny 中的绘图?

如何更改 Glue Crawler 创建的自动检测分区的列名?

如何修改 SQL Server Management Studio 中自动生成的脚本文件的默认文件名格式?