java - 在 Joda/Hibernate 中映射不带时间的日期

标签 java hibernate date

我正在查看this page为了在我的 Hibernate 映射中为 DATE 列获取除 java.util.Date 之外的替代类。

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

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

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

最佳答案

由于我使用 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并且没有其他方法,您可以尝试一下。

关于java - 在 Joda/Hibernate 中映射不带时间的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37561391/

相关文章:

Javascript 日期月持续时间计算 1/1 到 31/1 返回 0

java - Spring Data Native 查询分页不起作用

java - 如何调试使用 JVMTI 代理设置断点的 Java 应用程序(无法获取必要的 JVMTI 功能)

java - 更改 ListView 中所选项目的布局(自定义适配器)

java - ye olde "org.hibernate.NonUniqueObjectException"...我被这个难住了

java - DAO 和 Hibernate 类的标准命名

java - 当java线程执行synchronized语句失败时会发生什么?

java - 数据库更新后运行的 PUT 和 PATCH 的 Spring 数据剩余验证

mysql - 格式化mysql中的日期字段

mysql - sql查询来检查2个事件是否重叠