Joh*_*Doe 3 java hibernate jpa
我知道,@SecondaryTable问题已多次发布,所以,如果有相同的问题(我还没有找到),请给我链接或建议.
我的数据库(firstTable和secondTable)中有两个表,两个POJO Hibernate类(FirstTablePojo和SecondTablePojo).
+----------+ +-----------+
|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}(foo是FirstTablePojo我之前使用的属性@SecondaryTable)${feature.featureName},我看到每个foo,但没有featureNames出现.如果有人能告诉我我在这里错过了什么,以及为什么其他表中的功能名称没有出现在FirstTablePojo对象列表中,那就太棒了.
@SecondaryTable注释的要点是将单个实体的字段映射到多个表,就像将这些表合并为一个表一样.
@ManyToOne用于映射两个实体之间的多对一关联.但你只有一个.在这种情况下没有任何意义.@JoinColumn用于指示字段映射到构成... join列的列,即另一个表的外键.所以它也没有意义.
只需使用以下映射:
@Column(name="featureName", table="secondTable")
String featureName;
Run Code Online (Sandbox Code Playgroud)
通过Hibernate文档中的示例,可以很好地解释这一点.
| 归档时间: |
|
| 查看次数: |
6782 次 |
| 最近记录: |