Ich habe eine JPA 2-Anwendung (mit Hibernate 3.6 als JPA-Implementierung), die Postgresql verwendet (mit dem JDBC-Treiber 9.0-801.jdbc3).So ordnen Sie postgresql "Zeitstempel mit Zeitzone" in einer JPA 2-Entität an
Ich habe Probleme beim Zuordnen von "Zeitstempel mit Zeitzone" -Feldern in meine JPA-Entitäten. Hier
ein Beispiel:
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)
)
ich versucht habe, zu kartieren wie folgt:
@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 */
Ich erhalte immer eine Ausnahme mit der folgenden Ursache: Caused by: org.hibernate.HibernateException: Wrong column type in public.backend_themetopic for column created. Found: timestamptz, expected: date
Was Ich habe versucht
java.util.Calendar
mitjava.util.Date
ersetzen - machten keinen Unterschied- mit
java.sql.Timestamp
- darüber beschwert, dass ich die@Temporal
Anmerkung in ein Timestamp
nicht anwenden kannorg.joda.time.DateTime
mit einer benutzerdefinierten@Type
Annotation (@Type(type="org.joda.time.contrib.hibernate.PersistentDateTimeTZ")
) mit auch nicht funktionierte
Einschränkungen
- Diese Anwendung mit einem „Altsystem“ interagiert - so ist die Art der Datumsfelder ändern, nicht eine gute Option
Meine Frage ist: Wie soll ich diese Zeitzone bewusst Zeitstempel in meine JPA-Entitäten abzubilden?
Ist das nur wirklich nützlich für das DDL Auto oder während der Laufzeit auch? – cslotty
'columnDefinition'-Wert wird nur in DDL verwendet. Wenn Ihre Tabellenspalte jedoch mit dieser DDL erstellt wurde, wirkt sich dies indirekt auch auf das Laufzeitverhalten aus. –