Comment carte postgresql “timestamp avec le temps, la zone de” dans une entité JPA 2

J'ai une JPA 2 de la demande ( avec mise en veille prolongée de 3,6 que l'implémentation JPA ) qui utilise Postgresql ( avec la 9.0-801.jdbc3 pilote JDBC ).

J'ai de la difficulté cartographie "timestamp avec le temps", la zone des champs dans mon entités JPA.

Voici un exemple:

CREATE TABLE theme
(
  id serial NOT NULL,
  # Fields that are not material to the question have been edited out
  run_from timestamp with time zone NOT NULL,
  run_to timestamp with time zone NOT NULL,
  CONSTRAINT theme_pkey PRIMARY KEY (id ),
  CONSTRAINT theme_name_key UNIQUE (name )
)

J'ai essayé de carte comme suit:

@Entity
@Table(schema = "content", name = "theme")
public class Theme extends AbstractBaseEntity {
    private static final long serialVersionUID = 1L;

    @Column(name = "run_from")
    @NotNull
    @Temporal(TemporalType.TIMESTAMP)
    private Date runFrom;

    @Column(name = "run_to")
    @NotNull
    @Temporal(TemporalType.TIMESTAMP)
    private Date runTo;

    /* The rest of the entity has been edited out */

J'obtiens toujours une exception à la suite de la racine de la cause: Caused by: org.hibernate.HibernateException: Wrong column type in public.backend_themetopic for column created. Found: timestamptz, expected: date

Ce que j'ai essayé

  • remplacement java.util.Calendar avec java.util.Date - ne fait pas de différence
  • à l'aide de java.sql.Timestamp - se plaint du fait que je ne peut pas appliquer la @Temporal annotation d'un Timestamp
  • à l'aide de org.joda.time.DateTime avec une coutume @Type annotation ( @Type(type="org.joda.time.contrib.hibernate.PersistentDateTimeTZ") ) aussi n'a pas de travail

Contraintes

  • Cette application interagit avec un "ancien système" - donc, un changement dans les types de champs de date n'est pas une bonne option

Ma question est: comment dois-je faire correspondre ces fuseau horaire courant des horodateurs dans mon entités JPA?

InformationsquelleAutor Ngure Nyaga | 2012-11-13