org.hibernate.QueryException:并未设置所有命名参数:[]

时间:2013-08-10 09:08:38

标签: java hibernate jpa

我从JPA 2.0中得到了非常奇怪的行为

我正在尝试构建一个看似喜欢的查询,其中employeId和empDepartment是通过java参数传递的长值

Query query=em.createQuery("SELECT e FROM Employee e WHERE e.empId = :empId and e.empDepartment = :empDepartment");
query.setParameter("empId" ,employeId);
query.setParameter("empDepartment",empDepartment);

但是上面的查询第一次没有工作,它产生了上面的错误,但是当第二次我再次触发相同的方法时,每一件事都顺利进行,这种情况每次都会发生,这可能是什么原因?

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

Query query=em.createQuery("SELECT e FROM Employee e WHERE e.empId = ? and  e.empDepartment = ?");
query.setParameter(1, employeId);
query.setParameter(2, empDepartment);

如果这也不起作用,那么查询内容也可能存在问题,而不是替换参数。也许这些类型不正确。参数类型由上下文推断。

答案 1 :(得分:0)

Query query=em.createQuery("SELECT e FROM Employee e WHERE e.empId=:empId and e.empDepartment=:empDepartment");

query.setParameter("empId" ,employeId);
query.setParameter("empDepartment",empDepartment);

我不知道是什么原因,但它曾经发生在我身上。试试吧。只需删除=:\ tempId和其他参数之间的空格。