Hibernate:@SecondaryTable不起作用

Joh*_*Doe 3 java hibernate jpa

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

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

+----------+             +-----------+
|firstTable|             |secondTable|
|----------+             |-----------+
|featureId |------------>|featureId  |(secondTable's primary key)
|foo       |             |featureName|
|bar       |             +-----------+
+----------+
Run Code Online (Sandbox Code Playgroud)

我想在单个列表对象的jsp中显示这两个表中的字段,我决定使用@SecondaryTable.这两个表是通过featureId字段连接的(这是一个主键secondTable),我希望featureName从中secondTable显示来自的字段firstTable.在FirstTablePojo由该注释之前:

@SecondaryTable(name="secondTable", 
    pkJoinColumns=@PrimaryKeyJoinColumn(name="featureId", 
                                        referencedColumnName = "featureId"))
Run Code Online (Sandbox Code Playgroud)

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

 @ManyToOne
 @JoinColumn(name="featureId", table="secondTable")
 String featureName;
Run Code Online (Sandbox Code Playgroud)

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

JB *_*zet 7

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

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

只需使用以下映射:

@Column(name="featureName", table="secondTable")
String featureName;
Run Code Online (Sandbox Code Playgroud)

通过Hibernate文档中的示例,可以很好地解释这一点.