首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Spring R2DBC中重写数组(列表)类型转换

在Spring R2DBC中重写数组(列表)类型转换
EN

Stack Overflow用户
提问于 2019-06-13 12:36:59
回答 2查看 1.9K关注 0票数 3

我使用Postgres作为数据源,并为包含自定义对象列表的属性创建了一个自定义Spring转换器:

代码语言:javascript
复制
@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,因为我的自定义类型不是简单的类型。

有什么办法可以绕过这个守卫来抢些财产吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-18 09:48:39

目前,不可能覆盖,因为DatabaseClient将集合类型值视为Postgres数组字段的值。请向https://github.com/spring-projects/spring-data-r2dbc/提交一张罚单以解决这个问题。

票数 2
EN

Stack Overflow用户

发布于 2021-03-16 10:16:42

在文档的基础上,它不是有意支持的。

请注意,转换器被应用在奇异属性上。集合属性(例如集合)是按元素迭代和转换的。不支持集合转换器(例如转换器、OutboundRow)。

来源:春季-数据.r2dbc映射参考

解决方案:

创建包装类(复杂类型)如下:

代码语言:javascript
复制
class CustomObjectList { 
  List<CustomObject> customObjects;
}

然后,应用转换器Converter<CustomObjectList, String>,反之亦然。

代码语言:javascript
复制
public class CustomObjectListToStringConverter implements Converter<CustomObjectList, String> {
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56580662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档