ableyang0207 2009-12-05 00:05
浏览 230
已采纳

Hibernate执行成功,却得不到结果?

java代码:
Query query = s.createQuery("from AbsentReason where to_date(absent_e,'yyyy-mm-dd hh24:mi:ss') between :begin and :end");
System.out.println(new Date(System.currentTimeMillis()-60000*24*60));
System.out.println(new Date(System.currentTimeMillis()));
query.setDate("begin", new Date(System.currentTimeMillis()-60000*6*60));
query.setDate("end", new Date(System.currentTimeMillis()));
System.out.println(query.list().size());
数据库表相应字段内容:
absent_e

2009-12-04 21:16:54
2009-12-04 21:12:37
2009-12-04 21:06:00
执行结果:
begin(值):2009-12-03
end(值):2009-12-04
Hibernate(自动生成的SQL): select absentreas0_.id as id3_, absentreas0_.s_id as s2_3_, absentreas0_.absent_b as absent3_3_, absentreas0_.absent_e as absent4_3_, absentreas0_.reason as reason3_, absentreas0_.duration as duration3_ from AbsentReason absentreas0_ where to_date(absentreas0_.absent_e, 'yyyy-mm-dd hh24:mi:ss') between ? and ?
java代码的输出:0

请问为什么执行后得不到任何结果?
[b]问题补充:[/b]
很感谢两位的回答,SQL语句是没有问题的,在HQL中查询无结果,但在自己写的JDBC代码中可以得到结果,为什么在HQL中查询无结果还是没有解决
[b]问题补充:[/b]
感谢两位的回答,原来是测试值和输入值没有同步,导致我的分析错误,上面语句是可以执行的

  • 写回答

4条回答 默认 最新

  • xkuff 2009-12-05 11:03
    关注

    试试把to_date(absent_e,'yyyy-mm-dd hh24:mi:ss')改成to_date(absent_e,'yyyy-mm-dd')
    因为在yyyy-mm-dd hh24:mi:ss比较的时候,如果没有时间的话,默认是00:00:00,between 2009-12-03 00:00:00 and 2009-12-04 00:00:00,absent_e表中的数据都不符合查询范围,所以查询不到数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图的问题
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名