将java.sql.date转换为java.time.LocalDateTime
问题描述:
如何将从JDBC数据库返回的java.sql.Date
转换为java.time.LocalDateTime
?将java.sql.date转换为java.time.LocalDateTime
答
这实际上比我想象的要容易。 这工作对我来说: result.getTimestamp("value").toLocalDateTime()
+0
对于
答
如果您使用Java 8和Hibernate 5没有必要从/ java.sql.Date转换,只信任Java的魔术。
你需要使用的依赖关系是:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>5.1.0.Final</version>
</dependency>
如果您使用的是弹簧启动,没有必要宣布任何额外的依赖。
如果您使用的是Java的先前版本的建议是这样定义一个转换器:
@Converter(autoApply = true)
public class LocalDateAttributeConverter implements AttributeConverter<LocalDate, Date> {
@Override
public Date convertToDatabaseColumn(LocalDate locDate) {
return (locDate == null ? null : Date.valueOf(locDate));
}
@Override
public LocalDate convertToEntityAttribute(Date sqlDate) {
return (sqlDate == null ? null : sqlDate.toLocalDate());
}
}
[LocalDate和sql.Date之间的转换]可能的重复(http://stackoverflow.com/questions/29750861/convert-between-localdate-and-sql-date) – BackSlash
我已经看过这个问题。但我试图将sql.Date转换为LocalDateTime而不是LocalDate。 – Ferre12
然后通过@nobody链接的答案可以帮助(重复):[java.time.LocalDateTime和java.util.Date之间的转换](http://stackoverflow.com/questions/19431234/converting-between-java-time- localdatetime-和Java的util的最新)。 'java.sql.Date'是'java.util.Date'的一个子类,所以你可以投它。 – BackSlash