簡體   English   中英

休眠條件中LEFT_JOIN中的OR子句

[英]OR clause in LEFT_JOIN in hibernate criteria

如何在休眠條件的LEFT_JOIN中提供OR子句。

Criteria mainCrit=hibernateSession.createCriteria("Main.class");    
Criteria aPropertyCrit=mainCrit.createCrieria("child",CriteriaSpecification.LEFT_JOIN);

它生成sql為

select this_.Id,this_childId....
from main as this_
left join child as child1_ on child1_ .id=this_.childId
where.....

我需要生成sql作為

select this_.Id,this_childId....
from main as this_
left join child as child1_ on child1_.id=this_.childId or child_.ParentId=this_.childId
where.....

如何在上述條件的LEFT_JOIN中提供OR子句。

即使使用Criteria API,也可以擴展JOIN ... ON部分。 但這只是為了進行更嚴格的限制,即添加AND部分。

看一下createCriteria方法的重載,主要是Clause的最后一個參數:

Criteria createCriteria(String associationPath,
                        String alias,
                        JoinType joinType,
                        Criterion withClause)
                        throws HibernateException

創建一個新標准,在關聯實體處“植根”,分配給定別名並使用指定的聯接類型。

參數:

  • associationPath-點分隔的屬性路徑
  • alias-分配給加入的關聯的別名(以供以后參考)。
  • joinType-要使用的聯接類型。
  • withClause-要添加到連接條件中的條件(ON子句)

實際上,任何其他方法(例如,添加OR)都破壞了映射主體,從而引入了在末端進行交叉聯接的能力。 請參閱休眠條件:沒有映射關聯的聯接表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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