将一个简单的Mysql转换为JPQL查询

时间:2017-12-19 15:29:34

标签: mysql jpa jpql

大家早上好,在看到任何地方之后,我来找你寻求帮助。 所以我有一个这个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");
}

那么,我特别想要什么。我想要一个查询,可以在用户的​​表格列表中进行排序,其中工作场所是“技术人员”。

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

1 个答案:

答案 0 :(得分:0)

在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(); 
}