[英]How to convert LocalDateTime to LocalDate in JPA Query?
I have object with field LocalDateTime dateTime
.我有 object 字段
LocalDateTime dateTime
。 And I have the following repository method我有以下存储库方法
@Query("select m from MyClass m " +
"where m.dateTime >= :startDate and m.dateTime <= :endDate")
findAllByTradeTimeBetween(@Param("startDate") LocalDate startDate,
@Param("endDate") LocalDate endDate);
How to get LocalDate
of LocalDateTime dateTime
in this method.如何在此方法中获取
LocalDate
LocalDateTime dateTime
的 LocalDate。 Now I have an exception现在我有一个例外
Parameter value [2020-01-31] did not match expected type [java.time.LocalDateTime]
How can I fix it?我该如何解决?
It would seem more strict to keep the query in LocalDateTime, and add an API for LocalDate versions.将查询保留在 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());
}
This opens the API for some dubious usage (using LocalDateTimes).这将打开 API 用于某些可疑用途(使用 LocalDateTimes)。
You can use an javax.persistence.AttributeConverter to automate the conversion between the Date formats.您可以使用 javax.persistence.AttributeConverter 来自动执行日期格式之间的转换。 Here's the Converter class which will automatically convert the LocalDateTime object to LocalDate and viceversa:
这是转换器 class,它将自动将 LocalDateTime object 转换为 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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.