2016-06-01 51 views
1

我在寻找this page为了在我的Hibernate映射中得到一个替代类比java.util.DateDATE列。映射日期,没有时间,在乔达/休眠

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

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

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

+0

根据这个http://stackoverflow.com/questions/8307593/joda-time-hibernate-persistentyearmonthday-deprecated,你想要PersistentLocalDate。 – jtahlborn

回答

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,有没有别的办法,你可以试试看。