所以我真的有这个想法,因为我只编程了一小段时间,但我想构建一个反应式 Spring webflux 应用程序,将 json 端点暴露给反应前端。
当我决定在 Postgres 中使用 jsonb 格式时,问题就开始了,因为我认为我可能会一直使用 json 从数据库一直到前端层。
当我尝试使用反应式 R2dbc 驱动程序使用 jsonb 选择表时,我收到以下错误:
Caused by: java.lang.IllegalArgumentException: 3802 is not a valid object id
我在 postgres 中有一个如下所示的表:
Column | Type | Collation | Nullable | Default
---------+---------+-----------+----------+------------------------------
id | integer | | not null | generated always as identity
details | jsonb | | |
Indexes:
"snacks_new_pkey" PRIMARY KEY, btree (id)
因此,如果我将其作为文本提取到 Spring webflux 它工作正常,因为它不再是 json。
"SELECT id, details->>'name' as NAME, details->>'price' AS PRICE, details->>'quantity' AS QUANTITY FROM snacks_new"
我已经看到了一些关于如何使用较旧的阻塞驱动程序将 jsonb 转换为 json 对象的示例,但是我无法与较新的非阻塞驱动程序一起使用,我无法以任何方式访问它们。
所以我真的有 2 个问题,如何使用响应式驱动程序选择包含 jsonb 的表,我是否在浪费时间尝试这样做,将 json 提取为文本并从中创建一个正常的 POJO 就足够了吗?
谢谢你的时间!