3

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

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

但是不同的类型会导致显示“java.lang.ClassCastException:java.lang.String 无法转换为 java.util.Date”的问题。

即使我尝试使用日期解析器对其进行解析,但它并没有将其视为日期,而是仅将其视为字符串。那么,你能告诉我如何在休眠标准中将一个日期转换为不同的类型吗?

4

1 回答 1

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”是日期属性的名称,那么休眠将尝试将“X”转换为日期(而不是列名),并且将“X”解析为日期,比如说,有点复杂 - 所以异常上升。

于 2010-12-03T07:44:17.133 回答