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

标签 java mysql hibernate datetime

我的实体类中有一个带有 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,然后使用以下限制找到 createDateTimecreateDateTimePlusOneMinute 之间的时间范围

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

关于java - Hibernate - 将 DateTime 字段与 Restrictions.like 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29575908/

相关文章:

java - 注销按钮不起作用( session 无效)

java - 使用具有参数化功能的 jenkins 执行 AWS 设备场

PHP do/while 准备语句失败

java - 如何在 Spring MVC 中使用乐观锁

java - 在服务器上运行我的应用程序时如何避免 max_allowed_pa​​cket 错误?

java - 为什么安装后在模拟器上运行应用程序时,模拟器浏览屏幕上不显示该应用程序?

java - 如何将此代码转换为 prepared-statement 或 jdbc 中的语句?

c# - MySql.Data.MySqlClient C# 控制台应用程序

java - 如何在 Spring DATA JPA 中使用 UUID 生成器?

java - Hibernate JPA find() 和 merge() 之间删除的区别