Как отобразить postgresql «временную метку с часовым поясом» в сущности JPA 2
У меня есть приложение JPA 2 (с Hibernate 3.6 в качестве реализации JPA), которое использует Postgresql (с драйвером JDBC 9.0-801.jdbc3).
У меня возникли проблемы с отображением полей «метка времени с часовым поясом» в объекты JPA.
Вот пример:
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 )
)
Я попытался отобразить следующее:
@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 */
Я продолжаю получать исключение со следующей основной причиной:Caused by: org.hibernate.HibernateException: Wrong column type in public.backend_themetopic for column created. Found: timestamptz, expected: date
Что я пробовал
заменаjava.util.Calendar
с участиемjava.util.Date
- не имеет значенияс помощьюjava.sql.Timestamp
- пожаловался, что не могу применить@Temporal
аннотация кTimestamp
с помощьюorg.joda.time.DateTime
с обычаем@Type
аннотация (@Type(type="org.joda.time.contrib.hibernate.PersistentDateTimeTZ")
) тоже не сработалоОграничения
Это приложение взаимодействует с «устаревшей системой», поэтому изменение типов полей даты не является хорошим вариантом.Мой вопрос: как я должен отобразить эти временные метки с учетом часового пояса в мои объекты JPA?