Nakonec jsem to „fungoval“ – trochu hackerským způsobem – vypnutím ověřování schématu.
Dříve jsem měl <property name="hibernate.hbm2ddl.auto" value="validate"/>"hibernate.hbm2ddl.auto"
v mém persistence.xml. Když jsem tuto vlastnost okomentoval, můj aplikační server se spustil a model „fungoval“.
Konečná podoba mé entity byla:
@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 */
Po přečtení toho docela dost jsem nabyl dojmu, že neexistuje snadný způsob, jak mapovat časové razítko Postgresql se sloupci časového pásma.
Některé kombinace implementace JPA + databáze to nativně podporují (příkladem je EclipseLink + Oracle). Pro hibernaci s rozšířeními jodatime je možné ukládat časová razítka s vědomím časového pásma pomocí normálního časového razítka + pole varchar pro časové pásmo (nemohl jsem to udělat, protože jsem byl nucen změnit schéma databáze). typy uživatelů Jadira nebo k řešení tohoto problému lze také použít zcela vlastní typy uživatelů.
Musím poznamenat, že můj případ použití pro tuto entitu je „pouze pro čtení“, takže mi může uniknout zdánlivě naivní „řešení“.