Sto usando Play! 1.2.4 e PostgreSQL 9.1. Ho creato una tabella con una colonna created_at
, di tipo: timestamp without time zone
. Ha un valore predefinito di now()
.Come mappare la colonna timestamp al tipo JPA?
Il problema si presenta quando recupero i dati utilizzando la mia classe Entity per questa tabella. Il campo viene sempre restituito null
. Ecco la definizione del campo:
@Column(name="created_at", insertable=false)
public java.sql.Date createdAt;
Tutti gli altri campi sono compilati correttamente. Ho provato a modificare il tipo di campo su Date
, Calendar
, Timestamp
, ecc. E ho provato ad aggiungere un'annotazione @Timestamp
. Ma nessuna combinazione ha avuto successo.
Grazie in anticipo per qualsiasi aiuto!
Per riferimento, ecco il DDL che ho usato per creare la tabella.
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)
);
Aggiornamento: Penso che il problema ha a che fare con l'utilizzo di APP a inserire un record. Il database inserisce un valore predefinito di now()
per created_at
, ma in qualche modo Hibernate non ne è a conoscenza quando recupera tale riga.
Se si interroga una riga già esistente, il campo createdAt
viene compilato correttamente! OK ... questo limita il problema.
Ho provato, ma non andare. Il campo sta ancora ritornando null dal database. – slattery
Prova questo poi '@Column (name =" create_at ", insertable = false, nullable = false)' –
Qual è la tua richiesta? oppure prova anche questo: '@Column (name =" create_at ", insertable = false, columnDefinition =" now() ")' –