Я использую Play! 1.2.4 и PostgreSQL 9.1. Я создал таблицу со столбцом created_at
типа: timestamp without time zone
. Он имеет значение по умолчанию now()
.
Проблема возникает, когда я выбираю данные, используя класс 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 для вставки записи. База данных заполняет значение по умолчанию now()
для created_at
, но каким-то образом Hibernate не знает об этом при извлечении этой строки.
Если я запрашиваю уже существующую строку, поле createdAt
заполняется правильно!
ОК ... это сужает проблему.