参数值[2020-12-08t07:35]与预期类型[java.time.localdatetime(n/a)]jpa hibernate不匹配

cpjpxq1n  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(364)

我使用的是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 使用转换的自定义类 LocalDateTimeTimestamp 但也不起作用。
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` .

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题