繁体   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