我有一个网络服务明显无缘无故地失败了。有时它会执行,有时它会提供此错误,我似乎无法弄清楚,因为查询实际上是有意义的......
java.lang.IllegalArgumentException: You have attempted to set a value of type class org.models.Employees for parameter currentEmployeeID with expected type of class org.models.Employees from query string SELECT b.carID FROM Cars b WHERE b.currentEmployeeID = :currentEmployeeID .
at org.eclipse.persistence.internal.jpa.QueryImpl.setParameterInternal(QueryImpl.java:932)
在键入的查询中,
Employees emp = new Employees(1)
TypedQuery<Integer> query = em.createQuery("SELECT b.carID FROM Cars b WHERE b.currentEmployeeID = :currentEmployeeID", Integer.class);
query.setParameter("currentEmployeeID",emp);
正如我所说,有时它会起作用。有时当我重新启动服务时,它会连续失败。
如果我说 currentEmployeeID 作为整数而不是对象员工,它将提供一个更清晰的错误,我明白为什么..(比如,我正在尝试为参数设置整数类型的值......)
最佳答案
当您等待标识符时,传递给该方法的参数似乎是雇员类型。请尝试以下操作:
Employees emp = new Employees(1)
TypedQuery<Integer> query = em.createQuery("SELECT b.carID FROM Cars b WHERE b.currentEmployeeID = :currentEmployeeID", Integer.class);
query.setParameter("currentEmployeeID",emp.getId());
关于java - JPA 失败(java.lang.IllegalArgumentException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23771719/