我有一个情况。我在mysql数据库中有两种日期。一个是日期,另一个是日期时间。现在在休眠标准中,我必须检查一个日期是否大于另一个日期?
criteria.add(Restrictions.lt(“award.deadline”,“submission.date_received”));
但是不同的类型导致显示“java.lang.ClassCastException:java.lang.String无法强制转换为java.util.Date”的问题。
即使我尝试使用日期解析器解析它,但它没有采用仅作为字符串的日期。那么,你能告诉我如何在hibernate标准中将一个日期转换为不同的类型?
答案 0 :(得分: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”解析为比方说,日期有点复杂 - 所以异常就会增加。