我正在尝试将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 /郎/对象; ILorg /休眠/发动机/ SPI / SessionImplementor;)V
很清楚我做错了什么。有人能指出我正确的方向吗?
答案 0 :(得分:5)
看起来您正在使用 Hibernate 4。+
Joda-Time Hibernate
不支持此Hibernate版本
您可以使用Jadira Framework
中的usertype:
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>
答案 1 :(得分:1)
当使用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.xml
与Hibernate相关的部分:
<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.xml
与JodaTime相关的部分:
<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));