在我的应用程序中使用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的一些问题
答案 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,而将本机查询发送到数据库。 我再次建议您阅读文档,它非常有用。