我的实体类中有一个带有 Date
数据类型的 createDateTime
字段,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 %"
但我不知道如何通过 hibernate 来做到这一点。
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 + "%");
最佳答案
您应该创建一个日期变量,例如createDateTimePlusOneMinute
,然后使用以下限制找到 createDateTime
和 createDateTimePlusOneMinute
之间的时间范围
criteria.add(Restrictions.ge("createDateTime", createDateTime));
criteria.add(Restrictions.lt("createDateTime", createDateTimePlusOneMinute));
关于java - Hibernate - 将 DateTime 字段与 Restrictions.like 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29575908/