如何解决如何在JPA查询中将LocalDateTime转换为LocalDate?
我的对象的字段为LocalDateTime dateTime
。而且我有以下存储库方法
@Query("select m from MyClass m " +
"where m.dateTime >= :startDate and m.dateTime <= :endDate")
findAllByTradeTimeBetween(@Param("startDate") LocalDate startDate,@Param("endDate") LocalDate endDate);
如何通过此方法获取LocalDate
中的LocalDateTime dateTime
。现在我有一个例外
Parameter value [2020-01-31] did not match expected type [java.time.LocalDateTime]
我该如何解决?
解决方法
将查询保留在LocalDateTime中并为LocalDate版本添加API似乎更加严格。
@Query("select m from MyClass m " +
"where m.dateTime >= :startDate and m.dateTime < :endDate")
findAllByTradeTimeBetween(@Param("startDate") LocalDateTime startDate,@Param("endDate") LocalDateTime endDate);
findAllByTradeTimeBetween(LocalDate startDate,LocalDate endDate) {
return findAllByTradeTimeBetween(startDate.atStartOfDay(),endDate.plusDays(1).atStartOfDay());
}
这会打开API的一些可疑用法(使用LocalDateTimes)。
,您可以使用javax.persistence.AttributeConverter来自动进行日期格式之间的转换。这是Converter类,它将自动将LocalDateTime对象转换为LocalDate,反之亦然:
@SuppressWarnings("UnusedDeclaration")
@Converter(autoApply = true)
public class LocalDateConverter implements AttributeConverter<LocalDateTime,LocalDate> {
@Override
public LocalDate convertToDatabaseColumn(LocalDateTime localDateTime) {
//convert localDateTime to LocalDate
}
@Override
public LocalDateTime convertToEntityAttribute(LocalDate localDate) {
// convert localDate to LocalDateTime
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。