我使用@JoinColumn
注释进行一对多映射:
@JoinColumn(name="domainId",referencedColumnName="domainId")
。
但是,表中的外键列名称显示为domain_id
。那么有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
您可能正在使用provided
实现中的一个用下划线替换camelcase。与org.hibernate.cfg.NamingStrategy
列解析方法类似:
org.hibernate.cfg.ImprovedNamingStrategy
我建议使用/**
* Convert mixed case to underscores
*/
public String columnName(String columnName) {
return addUnderscores(columnName);
}
,因为它应该解析列名,因为它是:
org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
为了更改它在sessionFactory配置中的设置:
@Override
public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) {
return name;
}
如果您仍然遇到问题,可能需要编写自己的NamingStrategy:
hibernate.physical_naming_strategy=
org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
答案 1 :(得分:0)
@JoinColumn中的属性是数据库表列的名称。
所以这必须是domain_id