gpt4 book ai didi

java - JPA2 JoinColumns JoinColumn 名称不受尊重。 (Hibernate 3.6 和 H2)

转载 作者:行者123 更新时间:2023-12-02 16:20:35 25 4
gpt4 key购买 nike

这是简化的代码片段,省略了 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)
)

类(class)是:

@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_ID、TRAIT_ID、TRAIT_PERSONALITY_TYPE_ID。

为什么 @JoinColumn 名称被忽略?

它抛出异常:

初始sessionFactory创建失败.org.hibernate.MappingException:无法从表client_personalities中的物理名称personality_type_id找到逻辑列名称

java.lang.ExceptionInInitializerError引起原因:org.hibernate.MappingException:无法从表 client_personalities 中的物理名称 individual_type_id 找到逻辑列名称

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

例如:

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

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

来自 Pro JPA 2(ISBN 978-1-4302-1956-9/978-1-4302-1957-6)

最佳答案

也许可以尝试分别切换到@PrimaryKeyJoinColumns/@PrimaryKeyJoinColumn

它帮助this case ,我相信可能也是同样的原因。

关于java - JPA2 JoinColumns JoinColumn 名称不受尊重。 (Hibernate 3.6 和 H2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7836528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com