Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Java BooleanBuilder子句生成更长的sql查询_Java_Jpa_Querydsl - Fatal编程技术网

Java BooleanBuilder子句生成更长的sql查询

Java BooleanBuilder子句生成更长的sql查询,java,jpa,querydsl,Java,Jpa,Querydsl,我需要从电话号码列表中选择项目,其中某些电话号码的值可能为空。我当前使用的BooleanBuilder子句是: clause.and(QDashboard.dashboard.phoneList.any().number.isNull(). or(QDashboard.dashboard.phoneList.any().number.in(numbers))); 为上述子句生成的SQL查询为: AND ( EXISTS (SELECT 1 FRO

我需要从电话号码列表中选择项目,其中某些电话号码的值可能为空。我当前使用的BooleanBuilder子句是:

clause.and(QDashboard.dashboard.phoneList.any().number.isNull().
                    or(QDashboard.dashboard.phoneList.any().number.in(numbers)));
为上述子句生成的SQL查询为:

AND ( EXISTS
  (SELECT 1
  FROM phone_list pl
  WHERE parent.id         =pl.recordid
  AND ( pl.number IS NULL )
  )
OR EXISTS
  (SELECT 1
  FROM phone_list p2
  WHERE parent.id         =p2.recordid
  AND ( p2.number IN ( ?, ?, ?, ?, ?, ?, ? ) )
  )
我注意到,对于大型数据集,此查询速度较慢,如果SQL是这样的话,则会更快:

AND ( EXISTS
  (SELECT 1
  FROM phone_list pl
  WHERE parent.id         =pl.recordid
  AND ( pl.number IN ( ?, ?, ?, ?, ?, ?, ? )
  OR pl.number IS NULL)
  ));  
如何修改BooleanBuilder子句以生成上述格式的SQL查询