[英]criteria for left outer join in hibernate
我有兩個名為“ A”和“ B”的表。 表“ B”的主鍵在表“ A”中作為“ b_id”(列名)映射為外鍵。 在表“ A”中,“ B”的主鍵(b_id)可以為空。 即在“ B”表中的記錄不存在。 表“ B”將具有列“ del_flag”
現在,我需要從“ A”表中選擇所有行 (包括“ b_id”為空的行)。 如果b_id在表'A'中不為空,則我需要檢查表'B'的'del_flag '為'0'(零或零)。 即如果'B'記錄存在,我只需要顯示'del_flag'為0的記錄。
如何編寫上述條件的標准 。
我正在嘗試以下前兩個條件。 根據我的要求,它應該可以工作。
criteria.createAlias("b", "m"); -----> (1)
criteria.add(Restrictions.or(Restrictions.isNull("b"),Restrictions.eq("m.del_flag", "0"))); --->(2)
//criteria.add(Restrictions.isNull("b")); ----->(3)
讓我們來解決我面臨的問題。
問題出在“ creatAlias ”上。 我更改了要求,僅選擇具有'b_id'為null的那些 。 我只執行了(1)(3)個條件( 注釋了2個 )。 我有空的記錄 。
經過一段時間的努力,我也評論了條件(1) 。 現在我得到了結果集。
如果我執行(1)和(3)我沒有得到結果集。 只有(3)個給出結果集。
我認為這可能是我實際需要 的原因 。
嘗試這個:
session.createCriteria(A.class)
.createAlias("b", "bClass")
.setFetchMode("bClass", FetchMode.JOIN)
.add(Restrictions.or(Restrictions.isNull("bClass"),
Restrictions.eq("bClass.delFlag", 0)));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.