Jak zmapować postgresql „znacznik czasu ze strefą czasową” w jednostce JPA 2
Mam aplikację JPA 2 (z Hibernate 3.6 jako implementacją JPA), która używa Postgresql (ze sterownikiem JDBC 9.0-801.jdbc3).
Mam problem z mapowaniem pól „datownik ze strefą czasową” na moje jednostki JPA.
Oto przykład:
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 )
)
Próbowałem mapować w następujący sposób:
@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 */
Ciągle otrzymuję wyjątek z następującą podstawową przyczyną:Caused by: org.hibernate.HibernateException: Wrong column type in public.backend_themetopic for column created. Found: timestamptz, expected: date
Co próbowałem
wymianajava.util.Calendar
zjava.util.Date
- nie robiło różnicyza pomocąjava.sql.Timestamp
- skarżył się, że nie mogę zastosować@Temporal
adnotacja do aTimestamp
za pomocąorg.joda.time.DateTime
ze zwyczajem@Type
adnotacja (@Type(type="org.joda.time.contrib.hibernate.PersistentDateTimeTZ")
) też nie działaOgraniczenia
Ta aplikacja współdziała z „starszym systemem” - więc zmiana typów pól daty nie jest dobrym rozwiązaniemMoje pytanie brzmi: w jaki sposób należy mapować znaczniki czasu rozpoznające strefę czasową na moje jednostki JPA?