@JoinColumn使用不同的列名

时间:2017-12-12 07:15:26

标签: java hibernate spring-mvc jpa orm

我使用@JoinColumn注释进行一对多映射:

@JoinColumn(name="domainId",referencedColumnName="domainId")

但是,表中的外键列名称显示为domain_id。那么有人可以帮我解决这个问题吗?

2 个答案:

答案 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