Cuối cùng, tôi đã thực hiện "công việc" này - theo một cách hơi khó hiểu - bằng cách tắt xác thực giản đồ.
Trước đây, tôi có <property name="hibernate.hbm2ddl.auto" value="validate"/>"hibernate.hbm2ddl.auto"
trong sự kiên trì của tôi.xml. Khi tôi nhận xét thuộc tính này, máy chủ ứng dụng của tôi đã khởi động và mô hình "hoạt động".
Dạng thực thể cuối cùng của tôi là:
@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 */
Sau khi đọc một chút về điều này, tôi có ấn tượng là không có cách nào dễ dàng để ánh xạ dấu thời gian Postgresql với các cột múi giờ.
Một số tổ hợp cơ sở dữ liệu + triển khai JPA hỗ trợ điều này nguyên bản (EclipseLink + Oracle là một ví dụ). Đối với chế độ ngủ đông, với phần mở rộng jodatime, có thể lưu trữ dấu thời gian nhận biết múi giờ bằng cách sử dụng dấu thời gian bình thường + trường varchar cho múi giờ (tôi không thể làm điều đó vì tôi bị hạn chế thay đổi giản đồ cơ sở dữ liệu). Kiểu người dùng Jadira hoặc các kiểu người dùng hoàn toàn tùy chỉnh cũng có thể được sử dụng để giải quyết vấn đề này.
Tôi cần lưu ý rằng trường hợp sử dụng của tôi cho thực thể này là "chỉ đọc", vì vậy tôi có thể sử dụng một "giải pháp" có vẻ ngây thơ.