Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 不尊重JPA2 JoinColumns JoinColumn名称。(Hibernate 3.6和H2)_Java_Hibernate_Jpa_Jpa 2.0 - Fatal编程技术网

Java 不尊重JPA2 JoinColumns JoinColumn名称。(Hibernate 3.6和H2)

Java 不尊重JPA2 JoinColumns JoinColumn名称。(Hibernate 3.6和H2),java,hibernate,jpa,jpa-2.0,Java,Hibernate,Jpa,Jpa 2.0,下面是简化的代码段,省略了IdClass的详细信息。我遇到的问题是表格定义是: ClientPersonalityModel ( client_id int not null, personality_trait_id int not null, personality_type_id int not null, primary key (client_id, personality_trait_id, personality_type_id) ) 课程是: @Entity publi

下面是简化的代码段,省略了IdClass的详细信息。我遇到的问题是表格定义是:

ClientPersonalityModel
(
 client_id int not null,
 personality_trait_id int not null,
 personality_type_id int not null,
 primary key (client_id, personality_trait_id, personality_type_id)
)
课程是:

@Entity
public class ClientPersonalityModel
{
    @Id 
    @ManyToOne
    @JoinColumn(name="client_id")
    protected ClientModel client;

    @Id
    @ManyToOne
    @JoinColumns({
        @JoinColumn(name="personality_trait_id",referencedColumnName="id"),
        @JoinColumn(name="personality_type_id",referencedColumnName="personality_type_id")
    })
    protected ClientPersonalityTraitModel trait;
}
但是持久性框架试图使用CLIENT\u ID、TRAIT\u ID、TRAIT\u PERSONALITY\u TYPE\u ID列

为什么忽略@JoinColumn名称

它抛出一个异常:

初始sessionFactory creationfailed.org.hibernate.MappingException:无法从表client\u personalities中的物理名称personality\u type\u id中找到逻辑列名

java.lang.ExceptionInInitializeError 原因:org.hibernate.MappingException:无法从表client\u personalies中的物理名称personality\u type\u id中找到逻辑列名

许多示例都介绍了这种情况,但没有覆盖列名

例:

清单10-12。具有依赖标识符的项目

@Entity
@IdClass(ProjectId.class)
public class Project {
    @Id private String name;
    @Id
    @ManyToOne
    private Department dept;
    // ...
}

从专业JPA 2(ISBNs 978-1-4302-1956-9/978-1-4302-1957-6)

可能尝试分别切换到
@PrimaryKeyJoinColumns/@PrimaryKeyJoinColumn


我相信这可能是同样的原因。

我希望避免这种情况,因为我使用的是JPA2,我应该能够做到这一点。参见PRO JPA 2的第285页。@JasonPyeron感谢您的解释,我不知道JPA 2中发生了变化。似乎有一个更基本的问题在手: