答案 0 :(得分:2)
ParameterExpression<List<?>> vp=cb.parameter(List.class);
如果不起作用,请保留原始类型并添加@SuppressWarning('rawtypes');
答案 1 :(得分:0)
请确保您的问题应该包含能够非常清楚地传达您的问题陈述的所有信息。 我从上面的图像可以猜到,你在创建ParameterExpression时遇到了问题。为此,您可以查看以下示例代码。
private List<Customer> findCustomerWithParam(String name) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Customer> criteriaQuery = cb.createQuery(Customer.class);
Root<Customer> customer = criteriaQuery.from(Customer.class);
ParameterExpression<String> nameParameter = cb.parameter(String.class, "name");
criteriaQuery.select(customer).where(cb.equal(customer.get("name"), nameParameter));
return em.createQuery(criteriaQuery).setParameter("name", name).getResultList();
}
希望这对你有所帮助。
答案 2 :(得分:0)
问题源于使用以下模式
public <T> T f(Class<T> type) {
return type.newInstance();
}
这对容器类来说还不能令人满意。 低效的解决方法是复制列表。
List<?> list0 = f(List.class);
List<String> list = list0.stream()
.map(Objects::toString)
//Or .map(s -> (String)s)
.collect(Collectors.toList());
所以这是一个API限制。
我承认没有意识到方法parameter
可以提供。