【问题标题】:Joda DateTime hibernate mapping spring formJoda DateTime休眠映射弹簧形式
【发布时间】:2013-09-14 20:09:30
【问题描述】:

我正在尝试将 DateTime 对象映射到 TimeStamp SQL 列。

import org.springframework.format.annotation.DateTimeFormat;
...

    @Column
    @Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
    @DateTimeFormat(style="SS")
    private DateTime dateSmoked;

我正在使用 Spring 表单标签让用户根据@DateTimeFormat(style="SS") 输入“mm/dd/YYYY HR:MIN AM/PM”类型的日期输入。我已经导入了 joda-time-hibernate 包和所有其他必要的包

当我提交表单时,我收到以下错误: org.joda.time.contrib.hibernate.PersistentDateTime.nullSafeSet(Ljava/sql/PreparedStatement;Ljava/lang/Object;ILorg/hibernate/engine/spi/SessionImplementor;)V

很明显我做错了什么。有人能指出我正确的方向吗?

【问题讨论】:

    标签: sql spring hibernate datetime jodatime


    【解决方案1】:

    您使用的是 Hibernate 4.+
    Joda-Time Hibernate 不支持此 Hibernate 版本。
    您可以使用来自Jadira Framework 的用户类型: PersistentDateTime doc

        @Column
        @Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
        @DateTimeFormat(style="SS")
        private DateTime dateSmoked;
    

    maven 依赖

    <dependency>
        <groupId>org.jadira.usertype</groupId>
        <artifactId>usertype.jodatime</artifactId>
        <version>2.0.1</version>
    </dependency>
    

    【讨论】:

    • 这行得通。您需要 Jadira Usertype 和其他一些 jadira 库。
    【解决方案2】:

    当使用 Hibernate 的 4.3.5.Final 版本(帖子创建时的最后一个版本)时,我遇到了同样的问题。如前所述,您必须使用Jadira Framework

    Java 代码:

    private DateTime creationDate;
    
    @Column(name = "CREATION_DATE")
    @Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
    public DateTime getCreationDate() {
        return creationDate;
    }
    

    我的pom.xmlHibernate 相关部分:

    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>4.3.5.Final</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>4.3.5.Final</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate.common</groupId>
      <artifactId>hibernate-commons-annotations</artifactId>
      <version>4.0.4.Final</version>
    </dependency>
    

    我的pom.xmlJodaTime相关版块:

    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
      <version>2.7</version>
    </dependency>
    <dependency>
      <groupId>org.jadira.usertype</groupId>
      <artifactId>usertype.jodatime</artifactId>
      <version>2.0.1</version>
    </dependency>
    

    创建所需表的SQL脚本(注意TIMESTAMP类型):

    CREATE TABLE dropbox.MAPPING (ID INT NOT NULL AUTO_INCREMENT, DROPBOX_URL VARCHAR(300) NOT NULL, SHORTENED_URL VARCHAR(30) NOT NULL, CREATION_DATE TIMESTAMP NOT NULL, UNIQUE UQ_MAPPING (ID), PRIMARY KEY (ID));
    

    【讨论】:

      猜你喜欢
      • 2016-11-04
      • 1970-01-01
      • 2020-03-13
      • 1970-01-01
      • 2011-08-09
      • 2012-01-22
      • 2015-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多