【发布时间】:2017-12-07 10:25:34
【问题描述】:
给定两个实体:
Card-
PurchaseProductGroup,它有一个ppg_status列(在实体上名为status的字段)可以是'A'(活动)或'D'(已删除)
它们在概念上具有多对多关系,但使用了一个明确定义的名为 PurchaseProductGroupCard 的连接表实体(因此可以为每个映射分配一个外部 ID)。所以Card 和PurchaseProductGroup 都有@OneToMany 与PurchaseProductGroupCard 的关系,例如在Card 中有以下内容:
@OneToMany(mappedBy = "card")
private Set<PurchaseProductGroupCard> purchaseProductGroups;
这需要加以限制,以便排除状态为'D' 的purchaseProductGroups。一种似乎可行的方法是将@Where 注释放在@OneToMany 下方:
@Where(clause = "exists (select * from purchase_product_group ppg
where ppg.ppg_id = ppg_id AND ppg.ppg_status <> 'D')")
...但是有没有更好的方法来做到这一点?理想情况下,希望 Hibernate 加入表并有一个像 "purchaseProduct.status <> 'D'") 这样的子句。
【问题讨论】:
标签: oracle hibernate many-to-many jointable hibernate-filters