Sql JPA criteria api是否存在JOIN和IN问题?

Sql JPA criteria api是否存在JOIN和IN问题?,sql,jpa,left-join,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 其中,Ids是列表它开始给我这个错

这是一个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
其中,Ids是
列表
它开始给我这个错误“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();
        }

List myBFieldTypes=new ArrayList();
myBFieldTypes.add(5L);
myBFieldTypes.add(10L);
试一试{
List resultArray=em.createQuery(“在a.myAField=b.id上的表a左联接表b中选择a.id,在b.myAField=c.id上的表c中选择b.myBField:Ids左联接表c”)
.setParameter(“ID”,myBFieldTypes)
.getResultList();
返回结果数组;
}捕获(例外情况除外){
掷骰子;
}最后{
em.close();
}

错误是正确的。您使用的是哪种dbms?@jarlh为什么错误正确<据我所知,带有绑定参数的code>WHERE IN应该在JPA中工作。您应该向我们展示完整的相关Java代码,特别是您将列表绑定到参数的位置。@TimBiegeleisen,不需要括号?@jarlh否,请参见此处:错误是正确的。您使用的是哪种dbms?@jarlh为什么错误正确<据我所知,带有绑定参数的code>WHERE IN应该在JPA中工作。您应该向我们展示完整的相关Java代码,特别是您将列表绑定到参数的位置。@TimBiegeleisen,不需要括号?@jarlh否,请参见此处: