其中注释在hibernate中,以date作为子句

时间:2014-06-23 20:44:19

标签: java hibernate

我想知道是否有办法使用@Where(clause="")来绑定is_active=1 AND expires_date <= new Date() @OneToMany关系中的一组事物。

像这样的东西

@Where(clause="is_active=1 AND expires_date <=" + new Date())

或者你只能用常数做到吗?

此代码不仅可用于寻找解决方法,还是有办法执行此操作。 谢谢。

3 个答案:

答案 0 :(得分:3)

@Where.clause只能是一个常数,而尝试做的事情是不可能的 您可以通过查询/命名查询使用业务方法检索数据,也可以使用filter检索数据,因为过滤器可以手动激活并具有参数。
如果您需要获取报告的未到期数据,那么业务方法是正确的方法;如果你想在工作会话期间只以过时的方式看到未过期的数据,过滤器就是正确的解决方案。

答案 1 :(得分:1)

您可以通过在休眠中使用条件来完成此操作。在实现上述代码之前,请确保您已打开活动会话。

Calendar rightNow = Calendar.getInstance();
Criteria criteria = session.createCriteria(yourclassname.class);
criteria.add(Restrictions.eq("is_active", 1));
criteria.add(Restrictions.le("expires_date", rightNow));

答案 2 :(得分:0)

聚会晚了一点,但是您可以在PostgreSQL中使用current_date之类的sql函数来做到这一点:

@Where(clause="is_active=1 AND expires_date <= current_date")