作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 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 ”于关联实体,分配给定的别名并使用指定的连接类型。
参数:
事实上,任何其他方法(例如添加 OR) 都破坏了映射原则,引入了在末尾进行交叉连接的能力。请参阅Hibernate criteria: Joining table without a mapped association
关于java - hibernate 标准中 LEFT_JOIN 中的 OR 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19015498/
我是一名优秀的程序员,十分优秀!