gpt4 book ai didi

java - hibernate 标准中 LEFT_JOIN 中的 OR 子句

转载 作者:行者123 更新时间:2023-11-30 01:16:23 25 4
gpt4 key购买 nike

如何在 hibernate 条件中的 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 的重载方法,主要是最后一个参数withClause:

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

创建一个新的条件,“ Root ”于关联实体,分配给定的别名并使用指定的连接类型。

参数:

  • associationPath - 以点分隔的属性路径
  • alias - 分配给已加入关联的别名(供以后引用)。
  • joinType - 要使用的连接类型。
  • withClause - 要添加到连接条件(ON 子句)的条件

事实上,任何其他方法(例如添加 OR) 都破坏了映射原则,引入了在末尾进行交叉连接的能力。请参阅Hibernate criteria: Joining table without a mapped association

关于java - hibernate 标准中 LEFT_JOIN 中的 OR 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19015498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com