无法使用jooq vertx classic reactive:org.jooq.json插入json值.json不能被



我有一个包含3列的表,其中一列具有"json"类型。当我尝试插入值时(使用空json,但它是否为空并不重要,它无论如何都不起作用。(然后我得到错误:

java.lang.AssertionError:io.vertx.core.impl.NoStackTraceThrowable:位置[1]处的参数,class=[org.jooq.JSON],值为=不能将["{}"]强制为所需的class=[java.lang.Object]用于编码。

这是我的代码:

@Override
public Future<Void> saveInstances(List<Instances> instances, String tenantId) {
return getQueryExecutor(tenantId).transaction(queryExecutor -> queryExecutor.execute(dslContext -> {
InsertValuesStep3<InstancesRecord, UUID, JSON, String> insertValues = dslContext.insertInto(INSTANCES, INSTANCES.INSTANCE_ID,
INSTANCES.JSON, INSTANCES.REQUEST_ID);
instances.forEach(instance -> insertValues.values(instance.getInstanceId(), instance.getJson(), instance.getRequestId()));
return insertValues;
})
.map(rows -> null));
}

getQueryExecutior(tenantId(返回ReactiveClassicGenericQueryExecutior对象贪得无厌.getJson((reutns org.jooq.JSON类型。

数据库是PostgreSQL我不想使用任何转换器等。文档说jooq本机支持JSON和jsonb,但它们有什么问题?同样,我没有为包含JSON或jsonb列的表生成rowMapper。

<jooq.version>3.13.2</jooq.version>
<vertx-jooq.generator.version>5.1.1</vertx-jooq.generator.version>
<vertx-jooq.classic-reactive.version>5.2.0</vertx-jooq.classic-reactive.version>

对此感到困惑,任何建议都会有所帮助。非常感谢。

我得到了同样的错误,并通过添加到pom.xml中解决了它:

<configuration>
<generator>
<database>
<forcedTypes>
<forcedType>
<userType>io.vertx.core.json.JsonObject</userType>
<converter>io.github.jklingsporn.vertx.jooq.shared.postgres.JSONToJsonObjectConverter</converter>
<expression>[column expression here]</expression>
<types>(?i:JSON)</types>
</forcedType>
</forcedTypes>
</database>
</generator>
</configuration>

如果您有JSONB列,请将JSONToJsonObjectConverter替换为JSONBToJsonObjectConverter,并指定其类型。在表达式中,您可以指定应用特定转换器的列(例如,仅列名称(。

这将用io.vertx.core.json.JsonObject替换POJO中的org.jooq.JSON类型。

请小心选择兼容版本的vert.xvertx-jooq

最新更新