休眠条件查询中的 DATEDIFF 函数

DATEDIFF function in hibernate criteria query

我必须将以下查询转换为休眠条件查询:

select * from tbl1 t1,tbl2 t2 where t1.id=t2.id 
and ( To_char(t1.modified_date, 'YYYYMMDD') - To_char(get_sys_date, 'YYYYMMDD') )>10;

其中 get_sys_date 是一个 sql 函数。

当我在 java 代码中使用 datediff 函数时,如:

 Expression<String> day = cb.literal("day");
 Expression<Integer> diff = cb.function("DATEDIFF", Integer.class, day, currentDate, 
 root.get(myVO_.modified_date));

它给我一个编译错误:

method function in interface CriteriaBuilder cannot be applied to given types

'currentDate' 作为参数传递给方法。

那么creteria表达式怎么写?

我想通了。

通过使用ParameterExpression<Date> param = cb.parameter(Date.class);

我们可以做到这一点。 然后:

TypedQuery<myVO> tq = this.entityManager.createQuery(cq);
tq.setParameter(param, currentDate);
return tq.getResultList();