2017-02-23 74 views
7

如何將從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

回答

9

這實際上比我想象的要容易。 這工作對我來說: result.getTimestamp("value").toLocalDateTime()

+0

對於<= Java 7,這是一個合理的答案並且正確,但是您可以跳過使用'hibernate-java8'庫的轉換。現在可能是更好的方式。 –

2

如果您使用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

相關問題