Как преобразовать java.sql.Date
, возвращенный из базы данных JDBC, в java.time.LocalDateTime
?Преобразование java.sql.date в java.time.LocalDateTime
ответ
Это было на самом деле проще, чем я думал. Это работает для меня: result.getTimestamp("value").toLocalDateTime()
Это правдоподобный ответ и правильный для <= Java 7, но вы можете пропустить преобразования, используя библиотеку 'hibernate-java8'. Может быть, сейчас лучше. –
Если вы используете 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.
Возможный дубликат [Преобразование между 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-и-ява-Util-дата). 'java.sql.Date' является подклассом' java.util.Date', поэтому вы можете его использовать. – BackSlash