私はPlayを使用しています! 1.2.4およびPostgreSQL 9.1 created_at
列のテーブルを作成しました。タイプはtimestamp without time zone
です。デフォルト値はnow()
です。タイムスタンプ列をJPA型にマップする方法は?
このテーブルのEntityクラスを使用してデータを取得するときに問題が発生します。 createdAt
フィールドは常にnull
に戻ります。フィールド定義は次のとおりです。
@Column(name="created_at", insertable=false)
public java.sql.Date createdAt;
その他のフィールドはすべて正しく入力されています。フィールドタイプをDate
,Calendar
,Timestamp
などに変更しようとしましたが、@Timestamp
アノテーションを追加しようとしました。しかし、どの組み合わせも成功していないことが証明されている。
ありがとうございました!
参考のため、ここではテーブルの作成に使用したDDLを示します。
CREATE TABLE Users
(
id serial NOT NULL,
username text NOT NULL,
email text NOT NULL,
password_hash text NOT NULL DEFAULT 0,
created_at timestamp without time zone DEFAULT now(),
CONSTRAINT Users_pkey PRIMARY KEY (id),
CONSTRAINT Users_username_key UNIQUE (username)
);
更新: 私はこの問題は、レコードを挿入するためにJPAを使用して行うことがあると思います。データベースはcreated_at
のデフォルト値であるnow()
を設定しますが、Hibernateはその行をフェッチすると何とかそれを知りません。
既に存在する行を照会すると、createdAt
フィールドに正しく入力されます。 OK ...これは問題を絞り込みます。
私はそれを試しましたが、行っていません。フィールドはまだデータベースからヌルに戻ってきています。 – slattery
これを試してください。 '@Column(name =" create_at "、insertable = false、nullable = false)' –
あなたのクエリはどうですか? '@Column(name =" create_at "、insertable = false、columnDefinition =" now() ")' –