【发布时间】:2019-12-23 21:07:27
【问题描述】:
我有两个通过连接表关联的实体,使用 JPA 建模,如下所示:
class EntityA {
@ManyToMany
@JoinTable(name="joining_entity",
joinColumns={@JoinColumn(name="entity_a_id", referencedColumnName="id")},
inverseJoinColumns={@JoinColumn(name="entity_b_id", referencedColumnName="id")}
)
List<EntityB> entityBList;
Long importantIdentifier;
}
class EntityB {
@ManyToMany(mappedBy="entityBList")
List<EntityA> entityAList;
Long importantIdentifier;
}
这适用于简单的多对多关系,但在我的情况下,我还需要仅在 importantIdentifier 在两个实体中匹配时才加入。
对于临时查询,只需将ON 子句添加到连接中即可:AND entity_a.important_identifier=entity_b.important_identifier
但是,我正在努力使用 JPA/Hibernate 注释对此进行建模。我试过了:
- 添加一个额外的
@JoinColumn和@JoinTable-- 这将被忽略 - 添加
@Where或@WhereJoinTable注释 -- 不幸的是,似乎没有办法引用外部表/实体,只有连接表
如果有其他方法可以实现这一点,我不喜欢使用@JoinTable,即使用表示连接表的第三个具体实体的某种方法。
【问题讨论】: