Каков наилучший способ интеграции Java 8 Date Time api в jpa?
Я добавил конвертеры:
@Converter(autoApply = true)
public class LocalDatePersistenceConverter implements AttributeConverter<LocalDate, Date> {
@Override
public Date convertToDatabaseColumn(LocalDate localDate) {
return Date.valueOf(localDate);
}
@Override
public LocalDate convertToEntityAttribute(Date date) {
return date.toLocalDate();
}
}
и
@Converter(autoApply = true)
public class LocalDateTimePersistenceConverter implements AttributeConverter<LocalDateTime, Timestamp> {
@Override
public Timestamp convertToDatabaseColumn(LocalDateTime entityValue) {
return Timestamp.valueOf(entityValue);
}
@Override
public LocalDateTime convertToEntityAttribute(Timestamp databaseValue) {
return databaseValue.toLocalDateTime();
}
}
Все кажется прекрасным, но как мне использовать JPQL для запросов? Я использую Spring JPARepository, и цель состоит в том, чтобы выбрать все сущности, где дата совпадает с датой, только разница в том, что она сохраняется в объекте как LocalDateTime.
Итак:
public class Entity {
private LocalDateTime dateTime;
...
}
и
@Query("select case when (count(e) > 0) then true else false end from Entity e where e.dateTime = :date")
public boolean check(@Param("date") LocalDate date);
При выполнении это просто дает мне исключение, которое является правильным.
Caused by: java.lang.IllegalArgumentException: Parameter value [2014-01-01] did not match expected type [java.time.LocalDateTime (n/a)]
Я пробовал много способов, но кажется, что никто не работает, возможно ли это?