大家早上好,到处寻找后,我来找你寻求帮助。
所以我有一个这个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();
}