hibernate列名称问题

@Column(name="DateOfBirth") private Date dateOfBirth; 

我特别需要上面的代码来创建一个名为“DateOfBirth”的列,而不是Hibernate给我一个名为date_of_birth的列。 我怎么能改变这个? 有web.xml属性吗? 我遇到了DefaultNamingStrategy和ImprovedNamingStrategy,但不知道如何指定其中一个。

下面是一个可能的解决方法:如果将其命名为dateofbirth ,则DB中的列将被命名为,但属性名称应该相同。

Hibernate采用驼峰大小写格式来创建/读取数据库列。

我以前遇到过这个问题。 我使用了遗留列,其中列名称“employeename”,“employeerole”,“departmentlocation”中没有空格。 我讨厌它,因为我所有的bean属性都必须没有驼峰的情况。

由“_”分隔的数据库列将用于正确的camelCase,如您所见。

仅供参考:插入下划线的原因可能是因为您正在使用ImprovedNamingStrategy 。 它在Configuration对象上设置 。 在这里看一个例子……

如果您不想使用下划线,则可以不设置命名策略,或将其设置为之前发现的DefaultNamingStrategy。

试着把它放进去

application.properties

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

将@Column注释放在getter上:

 @Column(name="DateOfBirth") public Date getDateOfBirth() { ... } 

ImprovedNamingStrategy具有从tableName()和columnName()调用的方法addUnderscores(),您可以实现自己的命名策略类并根据您的选择覆盖它们

  public class MyOwnNamingStrategy extends ImprovedNamingStrategy { @Override public String tableName(String tableName) { //return addUnderscores(columnName); // skip this return columnName; // if you want column name variable name same //return changeAsYouWant(columnName); // as name sames } } 

建议的解决方法是使用@Column(name =“dateofbirth”),它适用于我的目的。

在弹簧靴的情况下添加以下属性。

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

你可以注释字段或getter方法,它没有什么区别。 你可以发布完整的hibernate.cfg.xml或persistence.xml文件吗?

我不是100%肯定,但是你不需要注释get方法而不是私有变量吗?