自动为@Embeddable类的列名添加前缀

2022-09-01 03:15:38

我正在开发一个项目,在这个项目中,我通过添加Hibernate注释来持久化一些POJO。我遇到的一个问题是这样的代码会失败,因为Hibernate试图将其中的子字段映射到同一列(即 并且两者都试图映射到腔,导致错误)。Time_TstartTime.secstopTime.secsec

@Entity
public class ExampleClass
{
  @Id
  long eventId;

  Time_T startTime;
  Time_T stopTime;
}

@Embeddable
public class Time_T
{
  int sec;
  int nsec;
}

由于在整个系统中会出现许多这样的情况,因此如果有一个选项可以自动将前缀附加到列名(例如,使列为 , , ),而不必基于每个字段应用覆盖,那就太好了。Hibernate是否具有此功能,或者是否有任何其他合理的解决方法?startTime_secstartTime_nsecstopTime_secstopTime_nsec


答案 1

尝试将属性设置为hibernate.ejb.naming_strategyorg.hibernate.cfg.DefaultComponentSafeNamingStrategy


答案 2

在我使用 org.hibernate:hibernate-core:5.0.12.Final 和 org.springframework.boot:spring-boot-starter-data-jpa:1.5.2.RELEASE 的情况下,我不得不在我的 application.properties 文件中执行以下属性:

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

推荐