1

DateTime オブジェクトを TimeStamp SQL 列にマップしようとしています。

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

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

@DateTimeFormat(style="SS") に従って、ユーザーに「mm/dd/YYYY HR:MIN AM/PM」タイプの日付入力を入力させるために、Spring フォーム タグを使用しています。joda-time-hibernate パッケージとその他の必要なパッケージをすべてインポートしました

フォームを送信すると、次のエラーが表示されます: org.joda.time.contrib.hibernate.PersistentDateTime.nullSafeSet(Ljava/sql/PreparedStatement;Ljava/lang/Object;ILorg/hibernate/engine/spi/SessionImplementor;)V

私が何か間違ったことをしているのは明らかです。誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

5

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;

メイヴンの依存関係

<dependency>
    <groupId>org.jadira.usertype</groupId>
    <artifactId>usertype.jodatime</artifactId>
    <version>2.0.1</version>
</dependency>
于 2013-09-14T22:06:28.117 に答える
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.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));
于 2015-05-31T19:58:03.137 に答える