将java.sql.date转换为java.time.LocalDateTime

问题描述:

如何将从JDBC数据库返回的java.sql.Date转换为java.time.LocalDateTime将java.sql.date转换为java.time.LocalDateTime

+9

[LocalDate和sql.Date之间的转换]可能的重复(http://stackoverflow.com/questions/29750861/convert-between-localdate-and-sql-date) – BackSlash

+1

我已经看过这个问题。但我试图将sql.Date转换为LocalDateTime而不是LocalDate。 – Ferre12

+0

然后通过@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

这实际上比我想象的要容易。 这工作对我来说: 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()); 
    } 
} 

您可以在此link发现更多关于Java的8使用LocalDateTime,以及更多这种转换器在这link