首页 > 解决方案 > JPA 中的删除查询给出错误

问题描述

当我尝试在 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)

标签: javamysqljpa

解决方案


您需要在查询中设置要删除的 ID。

public void removeAppoinmentsFromDB(int idToDelete) {
    entityManager.getTransaction().begin();
    Query query = entityManager.createQuery("DELETE FROM Programari WHERE idProgramari = :idToDelete");
    query.setParameter("idToDelete", idToDelete);
    query.executeUpdate();
    entityManager.getTransaction().commit();        
}

推荐阅读