HSQLDB + EclipseLink +生成DDL + DATE JODA TIME =错误的TIMESTAMP

时间:2014-06-03 14:58:31

标签: spring eclipselink jodatime hsqldb jpa-2.1

我正在使用:

Eclipselink 2.5.0
HSQLDB 2.3
JPA 2.1
Spring 4.0.5

我有这个实体:

@Entity
public class MyEntity {

    ...

    @Temporal(TemporalType.DATE)
    @Convert(converter = MyLocalDateTimeConverter.class)
    private LocalDate date;

}

当HSQLDB / Eclipselink生成DDL时,它会生成dabase字段:

TIMESTAMP

当我访问(通过选择)此实体时,我的转换器获得java.sql.Timestamp而不是java.sql.Date并将值转换为LocalDateTime而不是LocalDate

如何强制生成字段为:

DATE // respecting the Temporal definition

1 个答案:

答案 0 :(得分:-1)

您获得java.sql.TimeStamp的原因非常简单,您不仅在数据库中有yearmonthday,还有hour ,也许是minutesecond

java.sql.Datejava.sql.Timestamp之间的唯一区别是Timestamp,其中包含更多信息,例如hour,..

...,这意味着,获得java.sql.Timestamp是正确的。

PS:java.sql.Datejava.sql.Timestamp都是java.util.Date的包装..