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

如何将字符串列表作为参数传递给JPA本机查询,并在Postgresql数组[]中替换它们

茹航
2023-03-14

我有一个JPA原生查询,看起来像这样

@Query(
value = "SELECT * FROM feature f where jsonb_exists_any(f.feature_json -> 'properties' -> 'ids', array[:ids])", 
nativeQuery = true)

feature_json是一个jsonb列,: id是我需要传递给查询的输入参数,查询将是UUID字符串列表

使用示例值的查询如下所示

SELECT * FROM feature f where jsonb_exists_any(f.feature_json -> 'properties' -> 'ids', array['79eeb7ae-c2d0-3344-a6f5-eb424b820d03','a14bdb38-cedb-3743-bd50-9562ed2856b2'])

当我将上述值作为Java中的字符串列表传递时,查询无法执行:id中的值被替换为(79eeb7ae-c2d0-3344-a6f5-eb424b820d03, a14bdb38-cedb-3743-bd50-9562ed2856b2)而不是必需的'79eeb7ae-c2d0-3344-a6f5-eb424b820d03','a14bdb38-cedb-3743-bd50-9562ed2856b2'

我还尝试将这个引用的逗号分隔值作为字符串传递给: id参数,查询执行时没有任何错误,但没有获取任何结果。

如何将Java中的uuid字符串列表作为参数传递给上面指定的本机查询?

共有1个答案

燕承安
2023-03-14

更新:

我对查询进行了如下修改:

@Query(
value = "SELECT * FROM feature f where jsonb_exists_any(f.feature_json -> 'properties' -> 'ids', :ids)", 
nativeQuery = true)
List<FeatureEntity> getFeaturesByIds(@Param("ids") TypedParameterValue ids);

从调用函数传入new TypedParameterValue(StringArrayType.INSTANCE,stringArray)

stringArray在查询执行期间转换为postgresql文本数组,并且查询返回预期的响应。

 类似资料:
  • 我有一个服务类,它通过使用< code > carrepository . retrieve cars()调用JPA存储库来接收汽车列表。存储库方法使用本地查询来检索记录。 现在我想传递参数< code > carrepository . retrieve cars(Long vinNo,Long serialNo)并在查询中使用它们。我假设我会需要一些东西作为准备好的陈述。然而,我不知道如何实现

  • 问题内容: 我有一个整数或字符串列表,需要将其作为Delphi DataSet的参数传递。怎么做? 这是一个例子。MyQuery类似于: 我将参数设置为列表或数组或其他内容: 它将导致此查询发送到sql服务器: 如果该解决方案也可以与字符串一起使用,则执行以下查询会更好: 变得: 我相信这是一个简单的问题,但是“ IN”并不是搜索网络的好关键字。 请回答如何在IDE中配置参数,查询以及如何传递参数

  • 例子: 从卷号在(1,2,3)中的学生中选择*; 在学生存储库(Spring Boot)中: @查询(value=“从卷号所在的学生中选择*”,native=true) 列出selectStudents(我在这里给出什么?) 或者有没有其他方法来实现这一点?

  • 问题内容: 我想将字符串数组作为参数传递给函数。请看下面的代码 代替: 但是如果我这样做,我会收到一条错误消息,指出将其转换为。我想知道是否可以传递这样的值,或者正确的方法是什么? 问题答案: 怎么样:

  • 有人能告诉我如何使用将数组参数传递给postgresql函数吗?我尝试了下面的方法,但是得到了错误: 例外 psqlException:无法推断用于[ljava.lang.Integer;]实例的SQL类型。使用带有显式Types值的setObject()来指定要使用的类型。 谢谢

  • 问题内容: 是否存在通过查询字符串传递数组的标准方法? 需要明确的是,我有一个带有多个值的查询字符串,其中一个是数组值。我希望将该查询字符串值视为一个数组-我不希望该数组爆炸,以使其与其他查询字符串变量没有区别。 编辑: 根据@Alex的答案,没有标准的方法可以执行此操作,因此我的后续工作是什么才是 识别 我正在读取的参数同时是 PHP 和 Javascript 数组的简单方法? 用相同的名称命名