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

JPA CONCATE与IN运算符一起使用时引发异常

岳亮
2023-03-14

我试图运行一个复杂的JPQL查询,它不会抛出异常,而且工作起来很奇怪。

下面是我的问题

SELECT b.pk.col1, b.pk.col2
  FROM table1 b
 WHERE     b.pk.col2 IN ('someString')
       AND b.pk.col3 IN (0, 1, 2)
       AND b.pk.sdate < :now
       AND b.edate > :now
       AND b.col4 = 1
       AND EXISTS
              (SELECT a.cmid
                 FROM table2 a
                WHERE a.col1 = 5 AND a.col2 = b.pk.col1)
       AND b.pk.col1 NOT IN
              (SELECT a.pk.col1
                 FROM table3 a
                WHERE CONCAT (a.pk.tagid, 'ayush') IN ('1ayush'))
    SELECT b.pk.col1, b.pk.col2
  FROM table1 b
 WHERE     b.pk.col2 IN ('someString')
       AND b.pk.col3 IN (0, 1, 2)
       AND b.pk.sdate < :now
       AND b.edate > :now
       AND b.col4 = 1
       AND EXISTS
              (SELECT a.cmid
                 FROM table2 a
                WHERE a.col1 = 5 AND a.col2 = b.pk.col1)
       AND b.pk.col1 NOT IN
              (SELECT a.pk.col1
                 FROM table3 a
                WHERE CONCAT (a.pk.tagid, 'ayush') IN ('1ayush'))

编辑:这是我的新JPA查询,我给它一个集合,而不是一些硬编码的值

SELECT b.pk.col1, b.pk.col2
  FROM table1 b
 WHERE     b.pk.col2 IN ('someString')
       AND b.pk.col3 IN (0, 1, 2)
       AND b.pk.sdate < :now
       AND b.edate > :now
       AND b.col4 = 1
       AND EXISTS
              (SELECT a.cmid
                 FROM table2 a
                WHERE a.col1 = 5 AND a.col2 = b.pk.col1)
       AND (b.pk.col1 NOT IN
               (SELECT a.pk.col1
                  FROM table3 a
                 WHERE CONCAT (a.pk.tagid, 'ayush') IN (:somelist)))

我仍然得到同样的例外

共有1个答案

符风畔
2023-03-14

“xxx IN yyy”应为“{someValue}IN{someCollection}”。右侧没有集合,因此出现异常。如果您的查询现在确实在右边有一个集合(在post中没有),并且仍然得到一个异常,那么就发布实际的异常+堆栈跟踪。如果“xxx”和“yyy”应该相等,那么就使用“=”

 类似资料:
  • 我刚才向您展示了部分代码,在实体中messageId是长的,而在Oracle DB中它的编号是长的。当我尝试和long变量一样工作时,当我传递long数组时,它似乎就不工作了。如果有人遇到这样的问题,总有人能帮上忙。这就是错误所在 14:24:49,428信息[LongType]无法将值“[J@14F76DA”绑定到参数:1;[J不能强制转换为java.lang.Long

  • 我试图了解java中的运算符,如链接:-instanceof 但当我尝试运行以下代码时:- } 我在编译时遇到以下错误: 下面是放置src代码的目录结构:- 注意:我从

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

  • 我有如下疑问, 我通过如下传递值来调用服务方法。 但它回来了。。。[] 帮助我为什么我没有得到值,而是得到了空列表。 附言:我检查了日志,它的语句是创建的,没有任何问题

  • 问题内容: 我已经将奇怪的MySQL问题归结为执行查询的两种不同方式。当您煮沸所有东西时,这种方式将返回更多结果: 对WHERE子句的此更改将产生这些结果的子集: (promo_detail_store_id在MyISAM表中定义为BIGINT。) 最初,该store_ids列表要长得多,而我开始将其切得越来越短,以为字符串的长度可能存在一些怪异的限制。但是不,它也适用于很小的字符串/列表。显然,

  • 本文向大家介绍MySQL XOR运算符与IN子句?,包括了MySQL XOR运算符与IN子句?的使用技巧和注意事项,需要的朋友参考一下 如果一个或另一个操作数(或表达式)但不是两个都为TRUE,则MySQL XOR返回TRUE。IN子句用于指定任何其他MySQL查询的条件。 让我们先创建一个表 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 输出结果 这将产生以下输出-