JPA IN集合表达不起作用

时间:2016-08-08 19:16:22

标签: java jpa collections eclipselink

嗨大家好,

    List<Integer> typeList = new ArrayList<Integer>();
    typeList.add(1);
    typeList.add(2);
    Expression<Collection> expr = criteriaBuilder.literal(typeList);
    Path<Integer> path = root.get("type");
    path.in(expr);

生成的类型的SQL限制将是:

type=(1,2) 

而不是

type in (1,2)

以下作品

path.in(typeList) 

的工作原理。代码有什么问题?在我们的例子中,我们必须将集合转换为表达式。

编辑:

 Predicate  in(Expression<?>... values) 
 Predicate  in(Expression<java.util.Collection<?>> values) 

它似乎调用了第一种方法(错误)。怎么解决?似乎JPA定义了许多本身不明确的重载方法。

编辑:

如何从集合中创建表达式?文字(值)可能不是正确的方法。 JPA可能认为它是单个值,并用相同的比较器替换IN。

0 个答案:

没有答案