2017-02-23 2 views
7

Как преобразовать java.sql.Date, возвращенный из базы данных JDBC, в 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-и-ява-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()); 
    } 
} 

Вы можете нашли больше об использовании LocalDateTime в Java 8 в этом link, и больше о такого рода преобразователи на этом link.

Смежные вопросы