标准构建器 IN

Ант*_*нин 6 java hibernate

执行此代码时发生错误:

public Iterable<T> findAllByIds(List<Integer> ids) {
    Path<Integer> idField = root.get("id");
    Predicate in = idField.in(ids);
    query.select(root);
    query.where(in);
    query.orderBy(builder.asc(idField));
    List<T> result = entityManager.createQuery(query).getResultList();
    return result;
}
Run Code Online (Sandbox Code Playgroud)

在第 2 行中,抛出以下异常:

引起原因:java.lang.IllegalArgumentException:不知道如何将值 [[100, 101] : java.util.Arrays$ArrayList] 转换为请求的类型 [java.lang.Integer]

Hibernate 版本 5.2.11.Final,Java 8。

use*_*113 2

尝试这个 :-

public Iterable<T> findAllByIds(List<Integer> ids) {
    Expression<Integer> exp = root.get("id");
    Predicate in = exp.in(ids);
    query.select(root);
    query.where(in);
    query.orderBy(builder.asc(root.get("id")));
    List<T> result = entityManager.createQuery(query).getResultList();
    return result;
}
Run Code Online (Sandbox Code Playgroud)