Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @JoinColumn使用不同的列名_Java_Hibernate_Spring Mvc_Jpa_Orm - Fatal编程技术网

Java @JoinColumn使用不同的列名

Java @JoinColumn使用不同的列名,java,hibernate,spring-mvc,jpa,orm,Java,Hibernate,Spring Mvc,Jpa,Orm,我正在使用@JoinColumn注释进行一对多映射,如下所示: @JoinColumn(name=“domainId”,referencedColumnName=“domainId”) 但是,在外键列中,表中的名称显示为domain\u id。有人能帮我解决这个问题吗?@JoinColumn中的属性是数据库表列的名称 因此,这必须是域id您可能正在使用一个org.hibernate.cfg.NamingStrategy实现,它用下划线替换了camelcase。与org.hibernate.cfg

我正在使用
@JoinColumn
注释进行一对多映射,如下所示:

@JoinColumn(name=“domainId”,referencedColumnName=“domainId”)


但是,在外键列中,表中的名称显示为
domain\u id
。有人能帮我解决这个问题吗?

@JoinColumn中的属性是数据库表列的名称


因此,这必须是域id

您可能正在使用一个
org.hibernate.cfg.NamingStrategy
实现,它用下划线替换了camelcase。与
org.hibernate.cfg.ImprovedNamingStrategy
列解析方法类似:

/**
 * Convert mixed case to underscores
 */
public String columnName(String columnName) {
    return addUnderscores(columnName);
}
我建议使用
org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
,因为它应该按原样解析列名

@Override
public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) {
    return name;
}
要更改该设置,请在sessionFactory配置中进行设置:

hibernate.physical_naming_strategy=
    org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
如果您仍然有问题,您可能需要编写自己的NamingStrategy:

public class CustomNamingStrategy extends SpringPhysicalNamingStrategy{

    ...

    @Override
    public Identifier toPhysicalColumnName(Identifier name
                , JdbcEnvironment jdbcEnvironment) {
        return getIdentifier(name.toString(), name.isQuoted(), jdbcEnvironment);
    }

}

是什么创建了这个表?你呢?或者你的JPA提供商?通过使用PhysicalNamingStratergyStandardImpl解决了我的问题。非常感谢