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

a8jjtwal  于 2022-11-14  发布在  其他
关注(0)|答案(2)|浏览(173)

JPA2.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);

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

pw9qyyiw

pw9qyyiw1#

您可以尝试以下操作:

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

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

rnmwe5a2

rnmwe5a22#

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);

我不知道是什么原因,但我曾经遇到过这种情况。试着这样做。只要删除=:empId和其他参数之间白色空格。

相关问题