1

TIMESTAMP列を持つエンティティがあります。EntityManagerを使用してデータベースに新しいエントリを永続化すると、テーブルに正しく設定された新しい行を確認できますが、preparedQueryを使用してこのエンティティを取得しようとすると、TIMESTAMP属性がNullのエンティティが返されます。テーブル内でnullではありません。

@Basic(optional =     false)
@NotNull
@Column(name = "devis_date_crea", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date devisDateCrea;

注意:永続コンテキストで検証modをnullに設定するまで、persistメソッドはEJBCallBackExceptionをスローしました。

4

1 に答える 1

0

ご存じかどうかわかりませんが、SQL タイムスタンプには実際には時刻や日付は含まれていません。

タイムスタンプは、データベース内で一意であることが保証されている、自動生成された 2 進数を公開するデータ型です。タイムスタンプは通常、テーブル行にバージョン スタンプを付けるメカニズムとして使用されます。ストレージサイズは 8 バイトです。

日時が必要な場合は、日時型を使用する必要があります。作成と更新のたびに変更する必要がある場合は、作成にデフォルト値を使用し、更新にトリガーを使用できます。

詳細 http://msdn.microsoft.com/en-us/library/aa260631(v=sql.80).aspx

于 2012-02-27T15:10:51.693 に答える