我使用Postgres作为数据源,并为包含自定义对象列表的属性创建了一个自定义Spring转换器:
@Slf4j
@WritingConverter
@AllArgsConstructor
public class CustomObjectListToStringConverter implements Converter<List<CustomObject>, String> {
@Override
public String convert(@Nonnull List<CustomObject> source) {
try {
return objectMapper.writeValueAsString(source);
} catch (JsonProcessingException e) {
log.error("Error occurred while serializing list of CustomObject to JSON.", e);
}
return "[]";
}
}转换进行得很顺利,但是在IllegalArgumentException类的getArrayType方法中提出了PostgresArrayColumns,因为我的自定义类型不是简单的类型。
有什么办法可以绕过这个守卫来抢些财产吗?
发布于 2019-06-18 09:48:39
目前,不可能覆盖,因为DatabaseClient将集合类型值视为Postgres数组字段的值。请向https://github.com/spring-projects/spring-data-r2dbc/提交一张罚单以解决这个问题。
发布于 2021-03-16 10:16:42
在文档的基础上,它不是有意支持的。
请注意,转换器被应用在奇异属性上。集合属性(例如集合)是按元素迭代和转换的。不支持集合转换器(例如转换器、OutboundRow)。
解决方案:
创建包装类(复杂类型)如下:
class CustomObjectList {
List<CustomObject> customObjects;
}然后,应用转换器Converter<CustomObjectList, String>,反之亦然。
public class CustomObjectListToStringConverter implements Converter<CustomObjectList, String> {https://stackoverflow.com/questions/56580662
复制相似问题