gpt4 book ai didi

java - hibernate : @SecondaryTable doesn't work

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:31:55 24 4
gpt4 key购买 nike

我知道,@SecondaryTable问题已发布多次,因此,如果有相同的问题(我还没有找到),请给我链接或建议。

我的数据库中有两个表(firstTablesecondTable),两个 POJO Hibernate 类(FirstTablePojoSecondTablePojo)。

+----------+             +-----------+
|firstTable| |secondTable|
|----------+ |-----------+
|featureId |------------>|featureId |(secondTable's primary key)
|foo | |featureName|
|bar | +-----------+
+----------+

我想在单个列表对象的 jsp 中显示这两个表的字段,我决定使用 @SecondaryTable .这两个表由 featureId 连接字段(这是 secondTable 的主键),我想要 featureName来自 secondTable与来自 firstTable 的字段一起显示. FirstTablePojo前面有这个注释:

@SecondaryTable(name="secondTable", 
pkJoinColumns=@PrimaryKeyJoinColumn(name="featureId",
referencedColumnName = "featureId"))

我将此属性添加到 FirstTablePojo (使用 getter 和 setter):

 @ManyToOne
@JoinColumn(name="featureId", table="secondTable")
String featureName;

<c:forEach items="${features}" var="feature"> 的帮助下,我得到每个 ${feature.foo} ( foo 是在我使用 FirstTablePojo 之前 @SecondaryTable 中的属性)和 ${feature.featureName} ,我看到每个 foo , 但没有 featureNames出现。如果有人能告诉我我在这里遗漏了什么以及为什么其他表中的功能名称没有出现在 FirstTablePojo 的列表中,那就太好了。对象。

最佳答案

@SecondaryTable 注释的要点是将单个实体的字段映射到多个表,就好像这些表合并为一个表一样。

@ManyToOne 用于映射两个实体之间的多对一关联。但你只有一个。在这种情况下,这没有任何意义。而@JoinColumn 用于表示一个字段被映射到一个列,该列构成一个...连接列,即另一个表的外键。所以这也没有意义。

只需使用以下映射:

@Column(name="featureName", table="secondTable")
String featureName;

这在 Hibernate documentation 中通过一个例子得到了很好的解释。 .

关于java - hibernate : @SecondaryTable doesn't work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9605449/

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