hql 多重括号问题

chenwei3390 2010-06-17 10:20:44
我写的一个hql语句,查询条件如下所示
where a=?
and ((t.startTime < ? and t.endTime is null)
or (t.startTime < ? and t.endTime >=?)
or (t.endTime between ? and ?))
转换成执行sql却变成了
where a=?
and (t.START_TIME<? and (t.END_TIME is null)
or t.START_TIME<? and t.END_TIME>=?
or t.END_TIME between ? and ?)


求高手解答
...全文
361 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
logive 2010-06-17
  • 打赏
  • 举报
回复
菜鸟路过 学习学习
蛋黄车 2010-06-17
  • 打赏
  • 举报
回复
如果还不能解决的话,按not and or的优先级来写你的HQL语句

优先级顺序:not>and>or

我觉得是你的t.endTime is null这个在作崇
chenwei3390 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 colin_pxx 的回复:]
它转换成下面那种形式之后不是对的吗?
上面那种形式其他括号是多余的 所以会自动去掉
[/Quote]

括号是多余的?,上面的是先交集再并集
下面变成了交集和并集混在一起了,对吗?
colin_pxx 2010-06-17
  • 打赏
  • 举报
回复
它转换成下面那种形式之后不是对的吗?
上面那种形式其他括号是多余的 所以会自动去掉
boluo520 2010-06-17
  • 打赏
  • 举报
回复
where a=?  
and ((t.startTime < ? and t.endTime is null)or (t.startTime < ? and t.endTime >=?)or (t.endTime between ? and ?))

应该没有问题吧?
chenwei3390 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lrbyantai 的回复:]
反正括号用多了也没事,稍微改一下试试:

where a=?
and ((t.startTime < ? and (t.endTime is null))
or (t.startTime < ? and t.endTime >=?)
or (t.endTime between ? and ?))
[/Quote]

试了,不行,变成执行sql还是和原来一样
chenwei3390 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 closewbq 的回复:]
Java code

and ((t.startTime < ? and (t.endTime is null or t.endTime >=?)) or t.endTime between ? and ?)


[/Quote]

这是我第一次写的版本,变成执行sql时也是错的
我后来为了是逻辑更清晰才改成如题的版本
正不知道hql对于多括号的处理是什么逻辑啊?
closewbq 2010-06-17
  • 打赏
  • 举报
回复

and ((t.startTime < ? and (t.endTime is null or t.endTime >=?)) or t.endTime between ? and ?)

试试。
蛋黄车 2010-06-17
  • 打赏
  • 举报
回复
反正括号用多了也没事,稍微改一下试试:

where a=?
and ((t.startTime < ? and (t.endTime is null))
or (t.startTime < ? and t.endTime >=?)
or (t.endTime between ? and ?))
chenwei3390 2010-06-17
  • 打赏
  • 举报
回复
结贴 
谢谢 colin_pxx、lrbyantai

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧