这是一个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();
}