luc*_*cas 21 java annotations hibernate
@Column(name="DateOfBirth")
private Date dateOfBirth;
Run Code Online (Sandbox Code Playgroud)
我特别需要上面的代码来创建一个名为"DateOfBirth"的列,而不是Hibernate给我一个名为date_of_birth的列.我怎么能改变这个?是否有web.xml属性?我遇到了DefaultNamingStrategy和ImprovedNamingStrategy,但不知道如何指定其中一个.
Dan*_*ton 34
仅供参考:插入下划线的原因可能是因为您正在使用ImprovedNamingStrategy.它在Configuration对象上设置.见这里的一个例子...
如果您不想使用下划线,则可以不设置命名策略,或将其设置为之前发现的DefaultNamingStrategy.
Rah*_*ngh 28
试着把它放进去
application.properties
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
Run Code Online (Sandbox Code Playgroud)
这是一个可能的解决方法:如果您命名它dateofbirth,DB中的列将被命名为,但属性名称应该相同.
Hibernate采用驼峰大小写格式来创建/读取数据库列.
我以前遇到过这个问题.我使用了遗留列,其中列名称"employeename","employeerole","departmentlocation"中没有空格.我讨厌它,因为我所有的豆属性都必须没有驼峰的情况.
由"_"分隔的数据库列将用于正确的camelCase,如您所见.
将@Column注释放在getter上:
@Column(name="DateOfBirth")
public Date getDateOfBirth() {
...
}
Run Code Online (Sandbox Code Playgroud)
小智 6
如果是春季启动,请添加以下属性。
spring.jpa.hibernate.naming.implicit-strategy = org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
小智 5
改进的NamingStrategy具有addUnderscores()方法,该方法从tableName()和columnName()调用,您可以实现自己的命名策略类,并根据您的选择覆盖它们
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
}
}
Run Code Online (Sandbox Code Playgroud)