在Joda / Hibernate中映射日期,没有时间

时间:2016-06-01 06:50:58

标签: java hibernate date

我正在查看this page,以便在我的Hibernate映射中为java.util.Date列获取DATE之间的替代类。

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

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

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

1 个答案:

答案 0 :(得分: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并且没有别的办法,那么您可以尝试一下。