如何解决此Java警告&;JPA标准API的编译错误?
如果我声明如下所示,则会产生如下编译错误:如何解决此Java警告&;JPA标准API的编译错误?,java,jpa,criteria-api,Java,Jpa,Criteria Api,如果我声明如下所示,则会产生如下编译错误: 参数表达参数表达请确保您的问题中包含所有能够非常清楚地表达您的问题立场的信息。 从上图中我可以猜到,您在创建ParameterExpression时遇到了问题。为此,您可以查看以下示例代码 private List<Customer> findCustomerWithParam(String name) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Cust
参数表达参数表达请确保您的问题中包含所有能够非常清楚地表达您的问题立场的信息。
从上图中我可以猜到,您在创建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();
private List findCustomerWithParam(字符串名称){
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery-CriteriaQuery=cb.createQuery(Customer.class);
Root customer=criteriaQuery.from(customer.class);
ParameterExpression-nameParameter=cb.parameter(String.class,“name”);
criteriaQuery.select(customer).where(cb.equal(customer.get(“name”)、nameparmeter));
返回em.createQuery(criteriaQuery).setParameter(“name”,name).getResultList();
}
希望这能对您有所帮助。请确保您的问题包含所有信息,这些信息将非常清楚地传达您的问题立场。
从上图中我可以猜到,您在创建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();
private List findCustomerWithParam(字符串名称){
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery-CriteriaQuery=cb.createQuery(Customer.class);
Root customer=criteriaQuery.from(customer.class);
ParameterExpression-nameParameter=cb.parameter(String.class,“name”);
criteriaQuery.select(customer).where(cb.equal(customer.get(“name”)、nameparmeter));
返回em.createQuery(criteriaQuery).setParameter(“name”,name).getResultList();
}
希望这对您有所帮助。问题源于以下模式
public <T> T f(Class<T> type) {
return type.newInstance();
}
publicttf(类类型){
返回类型:newInstance();
}
这对于容器类来说还不能令人满意。
一个低效的解决办法是复制列表
List<?> list0 = f(List.class);
List<String> list = list0.stream()
.map(Objects::toString)
//Or .map(s -> (String)s)
.collect(Collectors.toList());
List list0=f(List.class);
List=list0.stream()
.map(对象::toString)
//或.map(s->(字符串)s)
.collect(Collectors.toList());
因此,这是一个API限制。
我承认,我没有意识到方法参数可以实现
public <T> T f(Class<T> type) {
return type.newInstance();
}
publicttf(类类型){
返回类型:newInstance();
}
这对于容器类来说还不能令人满意。
一个低效的解决办法是复制列表
List<?> list0 = f(List.class);
List<String> list = list0.stream()
.map(Objects::toString)
//Or .map(s -> (String)s)
.collect(Collectors.toList());
List list0=f(List.class);
List=list0.stream()
.map(对象::toString)
//或.map(s->(字符串)s)
.collect(Collectors.toList());
因此,这是一个API限制。
我承认,我没有意识到方法参数可以传递信息。是@SuppressWarning('rawtypes')
是我使用的参数表达式,我正在寻找@SuppressWarning('rawtypes')的替代解决方案;由于泛型类型擦除,无法提供类似(List.class)的构造
是我使用的参数表达式,我正在寻找@SuppressWarning('rawtypes')的替代解决方案;由于泛型类型擦除,无法提供类似(List.class)的构造。谢谢您的回答。实际上,我的问题不是如何使用ParameterExpression编写条件查询,而是如何解决上传图像中显示的警告和编译错误;谢谢你的回答。实际上,我的问题不是如何使用ParameterExpression编写条件查询,而是如何解决上传图像中显示的警告和编译错误;