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?