【发布时间】:2011-05-03 23:21:00
【问题描述】:
如何使用Hibernate 3.3.2GA 将Oracle 列类型TIMESTAMP WITH TIME ZONE 或TIMESTAMP WITH LOCAL TIME ZONE 映射到Java 数据类型?我可以将它们中的每一个都映射到Date 或Calendar 数据类型吗?
【问题讨论】:
标签: java oracle hibernate orm sqldatatypes
如何使用Hibernate 3.3.2GA 将Oracle 列类型TIMESTAMP WITH TIME ZONE 或TIMESTAMP WITH LOCAL TIME ZONE 映射到Java 数据类型?我可以将它们中的每一个都映射到Date 或Calendar 数据类型吗?
【问题讨论】:
标签: java oracle hibernate orm sqldatatypes
使用joda-time。它有一个extension for hibernate
@Columns(columns={@Column(name="startTime"),@Column(name="startTimezone")})
@Type(type="org.joda.time.contrib.hibernate.PersistentDateTimeTZ")
private DateTime startDateTime;
但首先要确保您确实需要存储时区。更好的做法是将时间存储在固定的 TZ(例如 UTC)中,并根据当前用户偏好显示它们。人们对他们时区中的事件时间感兴趣,而不是事件源的时区。
【讨论】:
TIMESTAMP WITH LOCAL TIME ZONE 不存储在固定时区(数据库时区)并将日期转换为客户端时区吗?