当前位置: 首页 > 知识库问答 >
问题:

JOOQ-如何使用Postgres表中的数组更新jsonb列以避免SQLDialtNotSupportedException

施阳曜
2023-03-14

我有一个带有jsonb列的PostgreSQL表,其中包含一个字符串数组,这些字符串是标记值,如下所示:[“tag1”,“tag2”,“tag3”]。我有一个自定义绑定,用于将JSON与jackson JSONode进行转换。

自定义绑定定义如下:https://gist.github.com/helgeg/0C0B14228F75E91B7542BD6979A05B49

用基本的find读取记录,然后我提取JSON列,如下所示:

VRelease release = releaseModel.find(id);
JsonNode tagNode = release.getTags();
  List<String> tagList = objectMapper.readValue(
      tagNode.toString(),
      objectMapper.getTypeFactory().constructCollectionType(
          List.class, String.class));
  tagList.add(tag);
  String jsonString = objectMapper.writeValueAsString(tagList);
  releaseModel.writeTags(id, objectMapper.readValue(jsonString, JsonNode.class));
  public int writeTags(Integer id, JsonNode tagList) {
    return ctx.update(TABLE).set(field(TAG_FIELD_NAME), tagList).where(PRIMARY_KEY.eq(id))
        .execute();
  }
org.jooq.exception.SQLDialectNotSupportedException: Type class com.fasterxml.jackson.databind.node.ArrayNode is not supported in dialect POSTGRES

这是使用jOOQ V3.9.5和PostgreSQL 9.6.5。

共有2个答案

范书
2023-03-14
热门标签
马欣德
2023-03-14
相关问题
 类似资料:
  • 在我的Java项目中,我是usinq、JOOQ,我希望更新JSONB值。但我的建造失败了。 我写了一段代码: 我收到了下一条信息: 我犯错的地方?

  • react 如何使用useCallback 避免全量更新? 在子组件的事件中使用useCallback 父组件 list.map 创建了子组件, 子组件触发事件导致 父组件的 list 发生变更, 于是组件全部发生了变化 这个过程中只有其中一个子组件发生了改变,所以我使用了 memo 包裹了一下 但是 传递的事件函数会重复创建,导致子组件全量更新 我应该如何使用useCallback 来实现顶点更

  • 我有如下jsonb专栏: 现在,我需要更新行,并将类似的文本数组放入字段。到目前为止我所尝试的: 是jsonb列 但它返回一个错误: 错误:函数jsonb_set(jsonb,unknown,integer[],boolean)不存在 提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。 附注: 我正在使用PostgreSQL 10

  • 问题内容: 我有一个json数组,其中包含大约1000个结构为“ oid:aaa,instance:bbb,value:ccc”的元素。 并且每个json数组都是唯一的。如果可以更改结构,可以将格式更改为 key:value : 但是,如果我需要保留旧结构 从阵列中获取特定信息的最快方法是什么? 什么是得到一个表的3列最快的方式,和。甚至更好的是将oid + instance作为列标题的数据透视表

  • 我有一个json数组,其中包含大约1000个结构元素“id: aaa, example: bbb, value: ccc”。 每个json数组的oid和实例都是唯一的。如果给我更改结构的选项,我会将格式更改为键:值: 但是,如果我需要保留旧结构 > 从阵列中获取特定oid的最快方法是什么? 获取包含、和3列的表的最快方法是什么。或者更好的是以oid实例作为列标题的数据透视表。 对于2。我尝试了以下

  • 我正在节点中使用knex。PostgreSQL数据库上的js项目。将使用knex.schema。raw(原始SQL)来实现这一点。 我需要更新jsonb列中json对象的“grades”数组中等级名称(“1st”等)的所有实例。“grades”是整个json对象中的一个值,这是一个教训。 数组当前包含类似于“grades”的内容:[“Pre-K”,“K”,“4th”,“5th”,“6th”,“7t