【问题标题】:Mapping a date, without time, in Joda/Hibernate在 Joda/Hibernate 中映射没有时间的日期
【发布时间】:2016-06-01 06:50:58
【问题描述】:

我查看this page 是为了在我的Hibernate 映射中为DATE 列获得一个替代类而不是java.util.Date

我发现没有一种非过时类型映射到 SQL 中的 DATE 列。

我想问一下映射到SQLDATE的Joda类型是什么。

附加信息:我们正在考虑 Joda,因为我们在使用 java.util.Date 表示没有时间的日期时遇到了麻烦,因为如果客户端和服务器的时区不匹配,日期可能会提前一天。现在有很多问题/问题悬而未决。准确地说:如果客户端处于正时区,而服务器使用 UTC 或负时区。

【问题讨论】:

标签: java hibernate date


【解决方案1】:

由于我使用 EclipseLink 进行持久化,我之前从未使用过 Joda-Time-Hibernate。

相反,为了映射 Joda 类型,我总是使用标准 JPA @Convert 将它们映射到数据库。

例如,一个简单、直接的转换器可能如下所示:

@Converter
public class LocalDateToDateConverter implements AttributeConverter<LocalDate, Date>
{
   @Override
   public Date convertToDatabaseColumn( LocalDate attribute )
   {
      return attribute == null ? null : new Date( attribute.toDate().getTime() );
   }

   @Override
   public LocalDate convertToEntityAttribute( Date dbData )
   {
      return dbData == null ? null : LocalDate.fromDateFields( dbData );
   }

}

如果您确实需要该列是 DATE 并且没有其他方法,您可以尝试一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-04
    • 2018-03-13
    • 2015-04-21
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    相关资源
    最近更新 更多