Hibernate - 将DateTime字段与Restrictions.like进行比较

时间:2015-04-11 08:46:55

标签: java mysql hibernate datetime

我的实体类中有一个createDateTime字段Date dataType,而hibernate在mysql表中生成了一个datetime类型的列。现在,我需要将createDateTime字段与值无比秒进行比较。实际上,一个用户可以在搜索字段中输入例如2015-01-01 12:10,我想显示结果为2015-01-01 12:10:10 crateDateTime的记录。我知道平面查询可以做到这一点:

SELECT * FROM table_test WHERE crateDateTime LIKE "2015-01-01 12:10 %"

但我不知道如何通过休眠来做到这一点。

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
data = formatter.parse("2015-01-01 12:10");

//This returned null.
Criterion crtmp = Restrictions.like("createDateTime", data);

//This returned ClassCastException. Because second argument must have "Date" dataType not "String"
Criterion crtmp = Restrictions.like("createDateTime", data + "%");

2 个答案:

答案 0 :(得分:2)

你应该创建一个Date变量,例如createDateTimePlusOneMinute,而不是使用以下限制查找createDateTimecreateDateTimePlusOneMinute之间的时间范围

criteria.add(Restrictions.ge("createDateTime", createDateTime));
criteria.add(Restrictions.lt("createDateTime", createDateTimePlusOneMinute));

答案 1 :(得分:0)

//日期时间比较

       Select c from Customer c where c.date<{d '2000-01-01'}