与えられた2つのエンティティ:(削除)ppg_status
列(フィールドエンティティにstatus
と命名)'A'
(アクティブ)であるか、または'D'
Hibernate @OneToMany明示的な結合テーブルエンティティにwhere句を追加する方法はありますか?
を持って
Card
PurchaseProductGroup
-
、これらは概念的に多対多の関係を持ちますが、明示的に定義された
PurchaseProductGroupCard
という名前の結合テーブルエンティティが使用されます(したがって、各マッピングに外部IDを割り当てることができます)。したがって、
Card
と
PurchaseProductGroup
の両方は、
PurchaseProductGroupCard
と
@OneToMany
の関係を持ちます。
Card
に以下があります:
@OneToMany(mappedBy = "card")
private Set<PurchaseProductGroupCard> purchaseProductGroups;
これは'D'
の状態にpurchaseProductGroupsが除外されるように制限する必要があります。
@Where(clause = "exists (select * from purchase_product_group ppg
where ppg.ppg_id = ppg_id AND ppg.ppg_status <> 'D')")
...しかし、これを行うには良い方法があります:動作するように思われる一つのアプローチは、ちょうど@OneToMany
下に@Where
注釈を入れているのですか?理想的には、テーブルに参加して"purchaseProduct.status <> 'D'")
のような節を持つためにHibernateを好むでしょうか?