有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

中的java CriteriaBuilder

执行此代码时出错:

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;
}

在第2行中,引发以下异常:

Caused by: java.lang.IllegalArgumentException: Unaware how to convert value [[100, 101] : java.util.Arrays$ArrayList] to requested type [java.lang.Integer]

Hibernate版本5.2.11。最后,Java8


共 (1) 个答案

  1. # 1 楼答案

    试试这个:-

    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;
    }