Hibernate Restrictions API to_char()函数

时间:2012-06-15 06:59:20

标签: oracle hibernate

大家好我有这样的SQL查询:

SELECT * FROM PEOPLE P WHERE to_char(P.BIRTH_DATE,'DD/MM/YYYY') = '01/06/2012'

我想通过Hibernate Restrictions API运行此查询。我认为以下内容不会做同样的工作:

Restrictions.eq(People.PROP_BIRTH_DATE, Calendar.getInstance())

我如何制定这样的限制?

1 个答案:

答案 0 :(得分:1)

java.sql.Date date = java.sql.Date.valueOf("2012-06-01");
criteria.add(Restrictions.eq(People.PROP_BIRTH_DATE, date));

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date date = df.parse("01/06/2012");
criteria.add(Restrictions.eq(People.PROP_BIRTH_DATE, date));

以上假设出生日期作为日期存储在数据库中,而不是时间戳。如果数据库中的出生日期是时间戳,因此有一个时间部分,那么可移植的方式是:

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date begin = df.parse("01/06/2012");
Calendar endCalendar = Calendar.getInstance();
endCalendar.setTime(date);
endCalendar.add(Calendar.DATE, 1);
criteria.add(Restrictions.ge(People.PROP_BIRTH_DATE, begin));
criteria.add(Restrictions.lt(People.PROP_BIRTH_DATE, endCalendar.getTime()));