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

JPA-在in运算符中使用长数组引发转换异常

李捷
2023-03-14
select t from MessageTable t where t.messageId IN (:id)  
query.setParameter("id", id);

我刚才向您展示了部分代码,在实体中messageId是长的,而在Oracle DB中它的编号是长的。当我尝试和long变量一样工作时,当我传递long数组时,它似乎就不工作了。如果有人遇到这样的问题,总有人能帮上忙。这就是错误所在

14:24:49,428信息[LongType]无法将值“[J@14F76DA”绑定到参数:1;[J不能强制转换为java.lang.Long

共有1个答案

乌翔
2023-03-14

数组long[]long[]在您要检查long/onlong时不是有效的参数类型-以下是:

  • 集合 (collection_valued_input_parameter)

如果您希望坚持使用JPA而不使用Kshitij建议的org.hibernate.query.SetParameterList,则必须将您的参数转换为collections

long[] id = {1L, 2L};
Long[] longs = ArrayUtils.toObject(id);
Collection<Long> list = Arrays.asList(longs);
 类似资料:
  • 问题内容: 是JPA的新手,并且能够快速获取它,我一直在尝试在查询中使用“ IN”运算符进行选择查询,并且一直在获取错误。我所做的是,我从一个函数中获取了一个(长)消息ID数组,并用它根据这些ID选择记录。这是我的查询 我刚刚向您展示了部分代码,其中实体messageId为long,而在Oracle DB中为数字。当我尝试使用尽可能长的变量时,当我传递长数组时,它似乎不起作用。如果有人遇到这样的问

  • 我试图运行一个复杂的JPQL查询,它不会抛出异常,而且工作起来很奇怪。 下面是我的问题 编辑:这是我的新JPA查询,我给它一个集合,而不是一些硬编码的值 我仍然得到同样的例外

  • 问题内容: 我有和数组两个值,我想在选择查询中将它与sql IN运算符一起使用。 这是我桌子的结构 我有两个值的数组 我想获取comp_id 1和comp_id 2的记录。因此,我编写了以下查询。 但是它不会返回结果。 问题答案: 由于您拥有普通 整数 就可以做到… (由于不断出现,一些其他信息…) 如果使用 字符串 (特别是 不受信任的 )输入,可以做到 但不能处理NULL之类的值。并会添加引号

  • 问题内容: 您能帮我如何将以下代码转换为使用条件生成器的“ in”运算符吗?我需要使用“ in”使用用户名列表/数组进行过滤。 我还尝试使用JPA CriteriaBuilder-“ in”方法进行搜索,但是找不到很好的结果。 因此,如果您能给我该主题的参考URL,我也将不胜感激。谢谢。 这是我的代码: 内部查询字符串将转换为以下内容,因此我无法获得两个用户创建的记录,因为它使用的是“ AND”。

  • 问题内容: 我正在寻找一种使用数组中的“ IN”子句查询postgres jsonb字段的方法。 假设我有一张桌子 我需要选择test_content数组中的label可能为或的行。 我试过了 但是当我想用包含扩展查询时,或者变得复杂… 我需要的是 jsonb运算符可以吗? 问题答案: 简短答案 您可以在横向联接中使用该函数,并在子句中的复杂表达式中使用其结果: 不同 当在单个行中的多个数组元素中

  • 问题内容: 我正在尝试在Dropwizard上使用MYSQL JDBI进行IN查询(我认为不相关)。 如这里的建议,我还用 但是,当我启动应用程序时,出现以下错误: 有谁对解决这个问题有个好主意? 问题答案: 有两种方法可以实现它。 1 。使用 该注释期望StringTemplate中具有SQL语句的组文件 说我有这个文件PersonExternalizedSqlDAO 由于我们正在使用,因此必须