Til sidst fik jeg dette til at "virke" - på en slags hackish måde - ved at slå skemavalidering fra.
Tidligere havde jeg <property name="hibernate.hbm2ddl.auto" value="validate"/>"hibernate.hbm2ddl.auto"
i min persistence.xml. Da jeg kommenterede denne egenskab, startede min app-server, og modellen "virkede".
Den endelige form for min enhed var:
@Entity
@Table(schema = "content", name = "theme")
public class Theme extends AbstractBaseEntity {
private static final long serialVersionUID = 1L;
@Column(name = "run_from", columnDefinition = "timestamp with time zone not null")
@NotNull
@Temporal(TemporalType.TIMESTAMP)
private Date runFrom;
@Column(name = "run_to", columnDefinition = "timestampt with time zone not null")
@NotNull
@Temporal(TemporalType.TIMESTAMP)
private Date runTo;
/* Getters, setters, .hashCode(), .equals() etc omitted */
Efter at have læst en del om dette, fik jeg det indtryk, at der ikke er nogen nem måde at kortlægge Postgresql-tidsstempel med tidszonekolonner.
Nogle JPA-implementering + databasekombinationer understøtter dette indbygget (EclipseLink + Oracle er et eksempel). For dvaletilstand, med jodatime-udvidelser, er det muligt at gemme tidszonebevidste tidsstempler ved hjælp af et normalt tidsstempel + et varchar-felt for tidszonen (det kunne jeg ikke gøre, da jeg var forhindret i at ændre databaseskemaet). Jadira-brugertyper eller helt tilpassede brugertyper kan også bruges til at løse dette problem.
Jeg skal bemærke, at min use-case for denne enhed er "read only", så jeg kunne slippe afsted med en tilsyneladende naiv "løsning".