簡體   English   中英

休眠中左外部連接的條件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM