0 0

Hibernta对多个or与 and条件组的处理5

原hql:
SELECT COUNT(*) FROM Video video where video.user.id = ? AND ( video.status = ? OR video.status = ? OR ( video.isValid = ? AND video.status = ? ))

hiberante处理后:
select count(*) as col_0_0_ from video video0_ where video0_.userId=? and (video0_.status=? or video0_.status=? or video0_.isValid=? and video0_.status=?)

它对 or xxx or (yyy and zzz) 这样的方式处理后,会把括号去掉,我觉得是不是它只能处理一层括号。

大家有没有处理过这样的情况。
2012年6月06日 14:56

2个答案 按时间排序 按投票排序

0 0

SQL关系运算符优先级AND > OR,所以有没有那个括号不影响SQL查询结果!
至于Hibernater执行后少了里面的那个括号,可能是自身优化处理吧。

2012年6月06日 17:01
0 0

最外层大括号没有用
SELECT COUNT(*) FROM Video video where video.user.id = ? AND  video.status = ? OR video.status = ? OR ( video.isValid = ? AND video.status = ? )
or的优先级高于and

2012年6月06日 15:14

相关推荐

Global site tag (gtag.js) - Google Analytics