HQL delete在java servlet中不起作用

HQL delete在java servlet中不起作用,java,Java,我正在处理HQL delete查询。我有一个自定义jsp,它根据特定条件显示数据库中的一些记录。我的尝试是从数据库中标记自定义jsp中显示的特定数量的行。我可以标记记录并正确读取它们的行id(我已经测试过了)。因此,我试图在定制servlet中使用HQL删除标记行,但记录没有被删除,我不确定是否需要对持久性文件进行额外配置。 欢迎对servlet中的HQL删除或更新做出任何贡献。我的servlet代码如下 package net.billing.deleterecords; import ja

我正在处理HQL delete查询。我有一个自定义jsp,它根据特定条件显示数据库中的一些记录。我的尝试是从数据库中标记自定义jsp中显示的特定数量的行。我可以标记记录并正确读取它们的行id(我已经测试过了)。因此,我试图在定制servlet中使用HQL删除标记行,但记录没有被删除,我不确定是否需要对持久性文件进行额外配置。 欢迎对servlet中的HQL删除或更新做出任何贡献。我的servlet代码如下

package net.billing.deleterecords;

import java.io.*;
import javax.persistence.*;
import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.*;
import org.openxava.jpa.*;

@WebServlet("/deleteDiaryServlet")
public class deleteDiaryServlet extends HttpServlet{

    public void doPost(HttpServletRequest request,  HttpServletResponse response) throws ServletException,IOException{

        String[] marked_records = request.getParameterValues("marked_record");

        PrintWriter out = response.getWriter();
        response.setContentType("text/html");
        out.print("<html><body>");
        out.print("The deleted records are: ");
        out.print("<ul>");
        for(String selected:marked_records){
            out.print("<li>" + selected + "</li>");
                out.print("<li>" + selected+  "</li>");
            String oid = "8a4b301f5b142791015b142c13c50002";
            Query query = XPersistence.getManager()
                        .createQuery("delete from Diary diary where diary.oid=:oid");
               query.setParameter("oid",oid);
               int count= query.executeUpdate();
               System.out.println("Rpws affected"+count);
        }

        out.print("</ul>");
        out.print("</body></html>");

    }
}
package net.billing.deleterecords;
导入java.io.*;
导入javax.persistence.*;
导入javax.servlet.*;
导入javax.servlet.annotation.*;
导入javax.servlet.http.*;
导入org.openxava.jpa.*;
@WebServlet(“/deleteDiaryServlet”)
公共类deleteDiaryServlet扩展了HttpServlet{
public void doPost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
String[]marked_records=request.getParameterValues(“marked_records”);
PrintWriter out=response.getWriter();
response.setContentType(“text/html”);
输出。打印(“”);
打印(“删除的记录为:”);
打印输出(“
    ”); 对于(所选字符串:已标记的\u记录){ 输出。打印(“
  • ”+选定+“
  • ”); 输出。打印(“
  • ”+选定+“
  • ”); 字符串oid=“8a4b301f5b142791015b142c13c50002”; Query=XPersistence.getManager() .createQuery(“从日记中删除,其中日记.oid=:oid”); setParameter(“oid”,oid); int count=query.executeUpdate(); System.out.println(“受影响的Rpws”+计数); } 打印(“
”); 输出。打印(“”); } }
您需要提交事务。尝试添加

XPersistence.commit()

在for循环之后,所有删除事务将一起提交。

您正在使用修复oid<代码>字符串oid=“8a4b301f5b142791015b142c13c50002”您应该了解软件架构。不要在视图中直接使用持久层感谢Jens的建议,我刚刚包含字符串oid=“8a4b301f5b142791015b142c13c50002”;对于仅测试删除是否有效的情况。我正在将值从另一个jsp获取到Servlet非常感谢我的XPersistence.commit()解决了我的问题非常感谢您的帮助,只需将您的问题标记为已回答…:)让我做一个聪明的人