Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用jooq vertx classic reactive插入json值:org.jooq.json无法强制为预期的类java.lang.Object_Java_Json_Postgresql_Vert.x_Jooq - Fatal编程技术网

无法使用jooq vertx classic reactive插入json值:org.jooq.json无法强制为预期的类java.lang.Object

无法使用jooq vertx classic reactive插入json值:org.jooq.json无法强制为预期的类java.lang.Object,java,json,postgresql,vert.x,jooq,Java,Json,Postgresql,Vert.x,Jooq,我有一个包含3列的表,其中一列的类型是“json”。当我尝试插入值时(使用空json,但它是否为空并不重要,它以任何方式都不起作用。)然后我得到错误: java.lang.AssertionError:io.vertx.core.impl.NoStackTraceThrowable: 位于位置[1]的参数,类为[org.jooq.JSON],值为= [“{}”]无法强制为预期的类=[java.lang.Object] 用于编码 这是我的密码: @Override public Future&

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

java.lang.AssertionError:io.vertx.core.impl.NoStackTraceThrowable: 位于位置[1]的参数,类为[org.jooq.JSON],值为= [“{}”]无法强制为预期的类=[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));
  }
@覆盖
公共未来保存实例(列表实例、字符串tenantId){
返回getQueryExecutor(tenantId).transaction(queryExecutor->queryExecutor.execute(dslContext->{
InsertValuesStep3 insertValues=dslContext.insertInto(INSTANCES,INSTANCES.INSTANCE_ID,
INSTANCES.JSON,INSTANCES.REQUEST_ID);
instances.forEach(instance->insertValues.values(instance.getInstanceId()、instance.getJson()、instance.getRequestId());
返回insertvalue;
})
.map(行->空);
}
getQueryExecutor(tenantId)返回ReactiveClassicGenericQueryExecutor对象 insatnce.getJson()reutns org.jooq.JSON类型

数据库是PostgreSQL。 我不想使用任何转换器等。文档中说jooq本机支持JSON和jsonb,但这里有什么问题? 我也没有为包含JSON或jsonb列的表生成行映射器

<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>
3.13.2
5.1.1
5.2.0

我对此感到困惑,任何建议都会有帮助。谢谢大家!

我得到了相同的错误,并通过添加到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>

io.vertx.core.json.JsonObject
io.github.jklingsporn.vertx.jooq.shared.postgres.JSONToJsonObjectConverter
[此处的列表达式]
(?i:JSON)
如果有JSONB列并指定其类型,则将
JSONToJsonObjectConverter
替换为
JSONBToJsonObjectConverter
。在表达式中,指定用于应用特定转换器的列(例如,仅列名称)

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

请小心选择兼容版本的
vert.x
vertx jooq