有没有办法用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数据R2DBC的转换器,但有必要为每个类编写单独的转换器。是否有可能在运行时为从某个特殊接口继承的或由特定注释注释的所有类动态生成Json转换器?
谢谢
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()
)
我有以下代码: 以及: 我得到以下错误: 以及更早的错误: 如果我将代码修改为: 然后,我不再得到关于项目关系存在的错误,但是,似乎事务被完全取消了? 我得到以下输出: 所以我的问题是 > 正确的方法是什么? 为什么我的CommandLineRunner代码似乎执行了两次?该表在运行代码后不会持久化,因此它似乎必须执行两次才能获得关于现有表的第一个错误。 谢谢你。
在该商业商店订购特定产品时,将向订单添加两个元值。 存储元值的两个字段位于 元键是: 我希望在下新订单时以编程方式创建一个新的自定义字段,并将此新字段的值设置为,前提是已订购的产品存在元键assemblycost。 经过一些研究,我发现是一个钩子,在订单保存到数据库并更新元数据后执行。所以这似乎是我应该使用的钩子。 参考:为Woocommerce中的订单添加额外的元数据: 我尝试在函数中添加以下代
我正在使用DatabaseClient执行sql查询,我不知道如何通过以下方式进行分组:
我是反应式编程的新手。我必须开发一个简单的Spring启动应用程序来返回一个json响应,其中包含公司及其所有子公司和员工的详细信息 创建了一个Spring Boot应用程序(Spring Webflow Spring data r2dbc) 使用以下数据库表来表示公司和子公司以及员工关系(这是一种与公司和子公司的层次关系,其中一个公司可以有N个子公司,而这些子公司中的每个子公司可以有另N个子公司
我有spring boot项目(版本< code>2.4.6),带有spring数据依赖项(< code > spring-boot-starter-data-JPA )和postgreSQL驱动程序。 在项目中,我们使用Hibernate和数据存储库,通过以下方式配置: 我还想加入反应性R2DBC。我的计划是在一个特定的地方使用它,在那里我们与其他系统集成,这样的通信通过反应式数据流进行。根据它
我正在尝试使用reactive连接spring项目中的oracle数据库。我需要符合Oracle TNS规范的反应式数据库连接。你能帮忙吗?