大家早上好,到处寻找后,我来找你寻求帮助。
所以我有一个这个mysql查询

SELECT * FROM USER WHERE WORPLACE ='TECHNICIAN',


这是我的JQPL查询

SELECT U FROM USER U WHERE U.WORPLACE =:+TECHNICIAN


但是我如何在Glassfish上得到这个错误

java.lang.IllegalStateException: Query argument Technician not found in the list of parameters provided during query execution.


这是托管Bean上我的arraylist的代码

public List<Users> getListUsers() {
    return this.userService.getTechnicians("Technician");
}


所以,我具体想要什么。我想要一个可以在用户的​​工作场所为“技术员”的用户的表列表中排序的查询。

感谢您的帮助,祝您有愉快的一天。

最佳答案

在JPQL中,命名查询参数以:开头,后跟名称。因此,如果要调用查询参数Technician,则需要在查询中将其引用为:Technician

然后,可以使用参数名称及其值在setParameter接口上调用Query方法。

这是使用您的查询的示例:

public List<User> getTechnicians(String technician) {
   TypedQuery<User> q = getEntityManager().createQuery("SELECT u FROM User u WHERE u.poste =:Technician", User.class );
   q.setParameter("Technician", technician);
   return q.getResultList();
}

09-29 19:57