有没有办法用spring-data-r2dbc将实体的某些字段保存为Json?
示例:
@Table("A")
class A {
@Id
var id: String = "1"
var some: MutableMap<String, String> = mutableMapOf()
}和表:
create table A (
id varchar(255) not null primary key,
some jsonb
)我已经研究了Spring data R2DBC的转换器,但是有必要为每个类编写单独的转换器。是否有可能在运行时为从某个特定接口继承的或由特定注释注释的所有类动态生成到Json的转换器?
谢谢!
发布于 2021-02-04 04:31:46
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()
)https://stackoverflow.com/questions/66032339
复制相似问题