Java 标准生成器

Java 标准生成器,java,hibernate,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));

执行此代码时出错:

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;
}
public Iterable findallbyds(列表ID){
路径idField=root.get(“id”);
谓词in=idField.in(id);
查询。选择(根);
查询。何处(中);
query.orderBy(builder.asc(idField));
List result=entityManager.createQuery(query.getResultList();
返回结果;
}
在第2行中,引发以下异常:

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

Hibernate版本5.2.11.Final,Java 8。

尝试以下操作:-

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;
}
public Iterable findallbyds(列表ID){
表达式exp=root.get(“id”);
谓词in=exp.in(id);
查询。选择(根);
查询。何处(中);
query.orderBy(builder.asc(root.get(“id”));
List result=entityManager.createQuery(query.getResultList();
返回结果;
}

查询和根在哪里定义?它们可能应该留在方法中:)它们是在类的构造函数中定义的。如果不是
Path idField=root.get(“id”);谓词in=idField.in(id)
在(id)中仅使用
谓词in=root.get(“id”).in?否,抛出相同的错误请显示构造函数代码,其中定义了root、query、builder.In行
Predicate In=root.get(“id”).In(id)引发相同的错误根目录中“id”列的类型是什么?另外,请尝试在下面确定获取错误的确切点-表达式exp=root.get(key);//获取列ref
@Id@GeneratedValue(strategy=GenerationType.TABLE,generator=“IdGenerator”)私有int-Id我已更新解决方案。同样的实现也适用于我。请试试这个,我希望它能帮上忙:)不,它不行。您使用的是什么版本的hibernate/spring?