JPA hibernate查询问题之间的日期

时间:2011-08-11 09:46:42

标签: mysql sql hibernate jpa

在我的应用程序中使用JPA实体管理器来保存数据/获取数据。

em.executeQuery("select * from file_calender_mapping where start_date between :start and :end");

em.setParameter(“start”,startDate)// startDate是日期对象

em.setParameter(“end”,endDate)// endDate是日期对象

列出fmlist = em.execute();

问题就是这样,

"select * from file_calender_mapping where start_date between start and end"

当我通过某个日期作为start =“2011-08-03 05:08:00”,并且结束=“2011-08-04 06:08:00” 然后mysql返回一行开始时间=“2011-08-03 05:30:00”,它的好,但是 当我的应用程序执行这样的查询它不会返回任何行。实际上我看到我的应用程序返回值为两个不同的日期,但不是相同的日期不同的时间,这是主要的问题。 另一件事是我的“开始”字段表“file_calender_mapping”数据类型是“timestamp”。

所以我认为这可能是JPA / Hibernate的一些问题

2 个答案:

答案 0 :(得分:3)

您可以尝试指定确切的参数类型,如下所示:

em.setParameter("start", startDate, TemporalType.TIMESTAMP);
em.setParameter("end",endDate, TemporalType.TIMESTAMP);

答案 1 :(得分:0)

我有强烈的感觉,你将EntityManager.createQuery()与EntityManager.createNativeQuery()混淆,并且你以某种方式捕获所有异常,这会以某种方式让你没有收到任何回复。

我假设,因为我认为你没有一个名为file_calender_mapping的类。

修改

documentation将比我更好地解释它,但是使用映射将JPA QL查询转换为数据库的navite sql,而将本机查询发送到数据库。 我再次建议您阅读文档,它非常有用。