Comment mapper la colonne timestamp pour JPA type?

Je suis en utilisant le Jeu! 1.2.4 et PostgreSQL 9.1. J'ai créé une table avec un created_at colonne de type: timestamp without time zone. Il a une valeur par défaut de now().

Le problème vient quand je récupérer les données à l'aide de ma classe d'Entité pour cette table. Le createdAt champ est toujours null. Voici la définition du champ:

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

Tous les autres champs sont remplis correctement. J'ai essayé de changer le type de champ pour un Date, Calendar, Timestamp, etc., et essayé d'ajouter un @Timestamp annotation. Mais aucune combinaison n'a été couronnée de succès.

Merci d'avance pour toute aide!

Pour référence, voici le DDL je l'ai utilisé pour créer la 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)
);

Mise à jour:
Je pense que le problème a à voir avec l'utilisation de JPA pour insérer un enregistrement. La base de données remplit une valeur par défaut de now() pour created_at, mais de toute façon, Hibernate ne sais pas à ce sujet lors de la récupération de la ligne.

Si j'ai une requête pour une ligne qui existait déjà, le createdAt champ est rempli correctement!
OK... cela réduit le problème.

OriginalL'auteur slattery | 2011-12-16

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *