【发布时间】:2022-01-28 11:59:56
【问题描述】:
我在使用 List 字段时遇到问题。
实体类:
@Entity
public class ToSearch{
@Convert(converter = CollectionConverter.class)
private List<String> myList;
//... OTHER FIELDS ...
}
转换器类:
public class CollectionConverter implements AttributeConverter<List<Object>, String> {
private ObjectMapper objectMapper = new ObjectMapper();
@Override
public String convertToDatabaseColumn(List<Object> object) {
try {
return objectMapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
return "";
}
}
@Override
public List<Object> convertToEntityAttribute(String data) {
try {
return objectMapper.readValue(data, new TypeReference<List<Object>>() {
});
} catch (Exception e) {
return null;
}
}
}
还有一个简单的规范:
predicates.add(criteriaBuilder.like(criteriaBuilder.lower(root.get("myList")), "%"+ term + "%")));
我的目标很简单,只要搜索一个词串,把它当作一个简单的字符串。
实际上,在数据库中,myList 是一个字符串,点赞搜索效果很好。
但是...当我执行这个...
Parameter value [%BLA%] did not match expected type [java.util.List (n/a)]
有什么想法吗?
【问题讨论】:
标签: spring-boot spring-data-jpa