如何更改 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 生成的列名的默认格式的主要内容,如果未能解决你的问题,请参考以下文章
如何将更新的列名从 HandsOnTable 传递到 Shiny 中的绘图?