首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Spring Data R2DBC和Postgres将字段保存为JSON

如何使用Spring Data R2DBC和Postgres将字段保存为JSON
EN

Stack Overflow用户
提问于 2021-02-04 01:10:22
回答 1查看 323关注 0票数 0

有没有办法用spring-data-r2dbc将实体的某些字段保存为Json?

示例:

代码语言:javascript
复制
@Table("A")
class A {
  @Id
  var id: String = "1"
  var some: MutableMap<String, String> = mutableMapOf()
}

和表:

代码语言:javascript
复制
create table A (
   id varchar(255) not null primary key,
   some jsonb
)

我已经研究了Spring data R2DBC的转换器,但是有必要为每个类编写单独的转换器。是否有可能在运行时为从某个特定接口继承的或由特定注释注释的所有类动态生成到Json的转换器?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-02-04 04:31:46

代码语言:javascript
复制
annotation class StoreJson

...


@Bean
fun converters() = R2dbcCustomConversions(
     Reflections().getTypesAnnotatedWith(StoreJson::class.java).map { clz ->
        mutableListOf(
            @WritingConverter
            object : GenericConverter {
                override fun getConvertibleTypes() = setOf(GenericConverter.ConvertiblePair(clz, Json::class.java))
                override fun convert(source: Any?, p1: TypeDescriptor, p2: TypeDescriptor) =
                    Json.of(objectMapper.writeValueAsString(source))
            },
            @ReadingConverter
            object : GenericConverter {
                override fun getConvertibleTypes() = setOf(GenericConverter.ConvertiblePair(Json::class.java, clz))
                override fun convert(source: Any?, p1: TypeDescriptor, p2: TypeDescriptor) =
                    objectMapper.readValue((source as Json).asString(), clz)
            }
        )
    }.flatten().toMutableList()
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66032339

复制
相关文章

相似问题

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