我正在使用:
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
答案 0 :(得分:-1)
您获得java.sql.TimeStamp
的原因非常简单,您不仅在数据库中有year
,month
和day
,还有hour
,也许是minute
和second
。
java.sql.Date
与java.sql.Timestamp
之间的唯一区别是Timestamp
,其中包含更多信息,例如hour
,..
...,这意味着,获得java.sql.Timestamp
是正确的。
PS:java.sql.Date
和java.sql.Timestamp
都是java.util.Date
的包装..