2

次のスキーマを持つ mysql db のテーブルがあります: [ID, Value, Date] ここで、ID と Value は int フィールドで、Date は TIMESTAMP です。次のような Java クラスを定義しました。

class myClass{
  private int ID;
  private int value;
  private java.sql.Timestamp date;
}

Hibernate 用に定義したマップを使用してデータベースからレコードを読み込もうとすると、すべて問題ないように見えますが、新しいオブジェクトを作成してデータベースに挿入しようとすると、エラーが発生します。これについて多くの投稿を読みましたが、本当に混乱しています。

4

2 に答える 2

5

java.sql.Dateの代わりにjava.util.Dateクラスを使用します。次に、次のようになります。

public class myClass {
     private int ID;
     private int value;

     @Temporal(TemporalType.TIMESTAMP)
     private java.util.date date;
}
于 2013-03-13T16:22:15.957 に答える
2

列が何であるかを Hibernate (または JPA) に伝える必要があります。データベースが異なれば、ネイキッド日付フィールドの扱いも異なります。Oracleでは、列に注釈を付けないと、Oracleはそれを(Oracle)タイムスタンプにします。どちらがあなたが望むものであるかそうでないか、そしてそうでないものはパフォーマンスです。常に注釈を使用することをお勧めします。この質問に基づいて、mySQL を使用する必要があるようです。

これを試して:

class myClass {
     private int ID;
     private int value;

     @Temporal(TemporalType.TIMESTAMP)
     private java.sql.Timestamp date;
}
于 2013-03-13T15:14:39.073 に答える