我正在查看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/