如何在休眠标准中转换日期类型

dhi*_*raj 3 java hibernate criteria-api

我有一个情况.我在mysql数据库中有两种日期.一个是日期,另一个是日期时间.现在在休眠标准中,我必须检查一个日期是否大于另一个日期?

criteria.add(Restrictions.lt("award.deadline","submission.date_received"));

但是不同的类型导致出现"java.lang.ClassCastException:java.lang.String无法强制转换为java.util.Date"的问题.

即使我尝试使用日期解析器解析它,但它没有采取仅作为字符串的日期.那么,你能告诉我如何在hibernate标准中将一个日期转换为不同的类型?

Ral*_*lph 5

问题是,这Restrictions.lt(String propertyName, Object value)是错误的限制.你需要的是什么Restrictions.ltProperty(String propertyName, String otherPropertyName).

说明:

  • Restrictions.lt(String propertyName, Object value) 是将实体属性与特定值进行比较
  • Restrictions.ltProperty(String propertyName, String otherPropertyName) 是比较两个实体属性

如果您使用Restrictions.lt("Y", "X")并且"Y"是日期属性的名称,那么hibernate将尝试将"X"转换为Date(而不是列名称),并且将"X"解析为Date,比如说,有点复杂 - 因此异常升级.