Как сопоставить столбец отметки времени с типом JPA?

Я использую Play! 1.2.4 и PostgreSQL 9.1. Я создал таблицу со столбцом created_at типа: отметка времени без часового пояса . По умолчанию он имеет значение now () .

Проблема возникает, когда я получаю данные, используя свой класс Entity для этой таблицы. Поле createdAt всегда возвращается null . Вот определение поля:

@Column(name="created_at", insertable=false)
public java.sql.Date createdAt;

Все остальные поля заполнены правильно.Я попытался изменить тип поля на Дата , Календарь , Отметка времени и т. Д. И попытался добавить аннотацию @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 заполняется правильно! Хорошо ... это сужает проблему.

9
задан slattery 16 December 2011 в 02:02
поделиться