【问题标题】:How to conver date type in hibernate criteria如何在休眠条件中转换日期时间
【发布时间】:2010-12-03 07:18:09
【问题描述】:

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

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

但不同的类型会导致显示“java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date”的问题。

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

【问题讨论】:

    标签: java hibernate criteria-api


    【解决方案1】:

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

    解释:

    • Restrictions.lt(String propertyName, Object value)是比较一个实体属性和一个具体的Value
    • Restrictions.ltProperty(String propertyName, String otherPropertyName)是比较两个实体属性

    如果您使用Restrictions.lt("Y", "X") 并且“Y”是日期属性的名称,那么休眠将尝试将“X”转换为日期(而不是列名),并将“X”解析为日期是,比方说,有点复杂 - 所以异常上升了。

    【讨论】:

    • 感谢拉尔夫的宝贵回答。
    猜你喜欢
    • 2011-04-08
    • 2011-08-13
    • 2021-02-26
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 2019-07-05
    相关资源
    最近更新 更多