【问题标题】:Hibernate HQL and Date休眠 HQL 和日期
【发布时间】:2009-11-30 11:00:38
【问题描述】:

我有一个 MySQL 表,其中一种列类型为 Date。在我的休眠映射文件中,我已将此列映射到类型 java.util.Date。现在在 HQL 中尝试根据日期相等性检索对象时,如果我使用 new Date() 设置日期,我不会得到任何结果。如果我通过将小时、分钟和秒设置为零来标准化日期,我会得到结果。这是必需的吗,因为我已将 SQL 列类型声明为 Date 而不是 Timestamp?

【问题讨论】:

    标签: java sql hibernate date


    【解决方案1】:

    试试 java.sql.Date

    希望这将帮助您解决日期平等问题。

    RDJ

    【讨论】:

    • "我有一个 MySQL 表,其中一种列类型为 Date。在我的休眠映射文件中,我已将此列映射到 java.util.Date 类型" - 改为尝试 java.sql.Date
    • 谢谢。那行得通,但是,您知道为什么即使列类型是 Date 也不能使用 java.util.date 类型吗?如果是 Timestamp 我理解,但是 Date 这件事让我感到困惑。
    • it cud b 可能是因为数据库(sql)中的日期格式与 util 中的日期格式不同(util 中的日期)。通常用于将数据库中的日期映射到休眠 java.sql.Date。乐于助人:)
    【解决方案2】:

    通过显式设置@Type,我能够将 java.util.Date 与 SQL Server 日期列一起使用:

    @Type(type="date")
    public java.util.Date getDate() {
        return date;
    }
    

    没有注释,我得到了

    java.lang.IllegalArgumentException: 时间戳格式必须是 yyyy-mm-dd hh:mm:ss[.fffffffff]

    使用 Hibernate 3.5.1-final

    【讨论】:

    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 2013-12-27
    相关资源
    最近更新 更多