I'm using Play! 1.2.4 and PostgreSQL 9.1. I created a table with a created_at column, of type: timestamp without time zone. It has a default value of now().
The problem comes when I fetch data using my Entity class for this table. The createdAt field is always coming back null. Here is the field definition:
@Column(name="created_at", insertable=false)
public java.sql.Date createdAt;
All the other fields are populated correctly. I have tried changing the field type to a Date, Calendar, Timestamp, etc., and tried adding a @Timestamp annotation. But no combination has proved successful.
Thanks in advance for any help!
For reference, here is the DDL I used to create the table.
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)
);
Update:
I think the problem has to do with using JPA to insert a record. The database populates a default value of now() for created_at, but somehow Hibernate doesn't know about it when fetching that row.
If I query for a row that already existed, the createdAt field is populated correctly!
OK... this narrows down the problem.