【发布时间】:2019-04-09 07:13:35
【问题描述】:
我在尝试使用 JPA 中的删除查询删除某些内容时遇到一些错误。
这是在主包中调用的删除函数。
public void removeAppoinmentsFromDB(int idToDelete) {
entityManager.getTransaction().begin();
Query query = entityManager.createQuery("DELETE FROM Programari WHERE idProgramari = :idToDelete");
query.executeUpdate();
entityManager.getTransaction().commit();
}
我得到这个错误: 线程“main”中的异常 java.lang.IllegalStateException:在查询执行期间提供的参数列表中找不到查询参数 idToDelete。
在 org.eclipse.persistence.internal.jpa.QueryImpl.processParameters(QueryImpl.java:579)
在 org.eclipse.persistence.internal.jpa.QueryImpl.executeUpdate(QueryImpl.java:294)
在 util.DatabaseUtil.removeAppoinmentsFromDB(DatabaseUtil.java:85)
在 main.Main.main(Main.java:82)
【问题讨论】:
-
在询问异常时,请始终发布异常的准确和完整的堆栈跟踪。但是这个查询有什么意义呢?为什么不直接使用 EntityManager.remove()? docs.oracle.com/javaee/7/api/javax/persistence/…
-
@JBNizet 我应该像老师说的那样使用删除查询,我在 5 分钟前尝试了删除并且一切正常,但我应该使用查询。跟踪链接:pastebin.com/1qnR6vh0
-
在问题中发布堆栈跟踪(不是链接,堆栈竞争本身)。然后发布实际代码。堆栈跟踪清楚地表明您没有执行您发布的查询。然后显示相关代码。宠物医院是什么?什么是程序化?最后,查询中的参数以
:开头:WHERE idAppoinment = :idToDelete -
@JBNizet 我用新的跟踪和代码编辑了帖子。
-
在问题中发布堆栈跟踪(不是链接,堆栈跟踪本身)。 [...]然后显示相关代码。宠物医院是什么?什么是程序设计?