我想在两个日期之间获取记录。以下查询无效。尝试以下方法:
1. from Employee where emp_Gkey=121 and empCreated BETWEEN '2016-08-29
00:00:00.0' and '2016-09-02 00:00:0.0';
2. from Employee where emp_Gkey=121 having empCreated BETWEEN '2016-08-29
00:00:00.0' and '2016-09-02 00:00:0.0';
3. from Employee where emp_Gkey=121 and empCreated >= '2016-08-29
00:00:00.0' and empCreated <= '2016-09-02 00:00:0.0';
请帮忙。我正在使用Oracle数据库,而hibernate列类型被定义为&#34; timestamp&#34;。
感谢。
答案 0 :(得分:0)
在HQL查询中,参数需要与实体中的映射属性具有相同的类型/类。
你需要这样的东西:
final TypedQuery<Employee> query =
em.createQuery("select e from Employee e where e.empCreated BETWEEN :from AND :to");
query.setParameter("from", new Date());
query.setParameter("to", new Date());
鉴于empCreated变量的类型为Date
。
我在这里使用标准的JPA(JPQL),我将把你的方法调用转换为你正在使用的任何东西。
通常,在编写HQL / JPQL查询时,您必须忘记数据库的外观。查询是针对实体(java类),而不是数据库表!