JPA条件api的JOIN和IN是否有问题?

时间:2019-12-02 09:58:05

标签: sql jpa left-join

这是一个JPA查询问题。我已经在单独的情况下在EntityManager.CreateQuery中成功使用了“ LEFT JOIN”和“ IN:”,但是当我将两者结合时,例如

SELECT a.id 
FROM TableA a 
  LEFT JOIN TableB b on a.myAField = b.id and b.myBField in :Ids 
  LEFT JOIN TableC c on b.myBOtherField = c.id

Id是List<Long>的地方,它开始给我这个错误“ IN表达式中缺少左括号。”

直接粘贴到postGres pgAdmin中的sql可以正常工作,显式写出参数。我在这里的语法有误吗?或者这是jpa的限制,我需要替代方法吗?


        List<Long> myBFieldTypes = new ArrayList<>();
        myBFieldTypes.add(5L);
        myBFieldTypes.add(10L);

        try {
            List<Long> resultArray = em.createQuery("SELECT a.id FROM TableA a LEFT JOIN TableB b on a.myAField = b.id and b.myBField in :Ids LEFT JOIN TableC c on b.myBOtherField = c.id")
                    .setParameter("Ids", myBFieldTypes)
                    .getResultList();
            return resultArray;
        } catch (Exception ex) {
            throw ex;
        } finally {
            em.close();
        }

0 个答案:

没有答案