java - 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)
解决方案
您需要在查询中设置要删除的 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();
}
推荐阅读
- java - 整数变量存储 0 作为方法返回值
- visual-studio - 在 VS 模板中将文件名设置为项目名
- azure - 将自定义域名(不是子域)添加到托管在 Azure 存储上的静态站点
- sql - 如何在oracle中合并/合并两个表
- mysql - 从多态关系中的相关表中返回单个记录的查询
- javascript - Jquery以行主要顺序读取字母将它们集中到一个字符串中并返回它
- c++ - 是否 avcodec_receive_frame 和 avcodec_send_packet 块/如何设计 ffmpeg 解码循环?
- postgresql - postgres如何组织文件
- java - 从 Java 调用 as400 系统
- pyqt5 - PyQt5结合QVBoxLayout和QStackedLayout