我使用的是jpa2.3.1和jdbc5.2.7,当时我尝试在postgresqldb中使用jpa repo查询表 LocalDateTime
作为参数类型。它不断得到这个错误:
Parameter value [2020-12-08T07:35] did not match expected type [java.time.LocalDateTime (n/a)]
我还尝试添加自定义属性 @Convert
使用转换的自定义类 LocalDateTime
至 Timestamp
但也不起作用。
evententity.class具有如下属性:
@Column(name = "event_timestamp",nullable = false)
@JsonSerialize(using = CustomLocalDateTimeSerializer.class)
@Convert(converter = LocalDateTimePersistenceConverter.class)
LocalDateTime eventTimestamp;
``` `CustomLocalDateTimeSerializer` 类只是将datetime值序列化为 `"yyyy-MM-dd HH:mm:ss.SSS"` 使用 `DateTimeFormatter` 以这种格式插入到列记录中。
localdatetimepersistenceconverter.class,转换如下:
@Converter(autoApply = true)
public class LocalDateTimePersistenceConverter implements AttributeConverter<LocalDateTime, java.sql.Timestamp> {
@Override
public java.sql.Timestamp convertToDatabaseColumn(LocalDateTime entityValue) {
if (entityValue != null) {
return java.sql.Timestamp.valueOf(entityValue);
}
return null;
}
}
用于搜索的类如下所示:
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class SearchCriteria {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
LocalDateTime eventTimestamp;
}
这是查询方法:
public void search(SearchCriteria sc){
Specification
searchCriteria.add(new SearchCriteria("eventTimestamp",
SearchOperation.GreaterThanOrEqual , sc.getEventTimestamp()));
return new SpecificationsBuilder(searchCriteria).build();
}
SearchCriteria sc = new SearchCriteria();
sc.setEventTimestamp(LocalDateTime.now());
Specification searchSpecification =
search(sc);
List entities = repository.findAll(searchSpecification);
我根据这个版本的jpa还不能自动转换为的研究来实现这个转换 `LocalDateTime` 因为它正在使用 `java.util.timestamp` .
暂无答案!
目前还没有任何答案,快来回答吧!