HQL删除不适用于java servlet

时间:2017-04-18 10:35:46

标签: java

我正在与HQL删除查询作斗争。我有一个自定义jsp,它根据特定条件显示数据库中的一些记录。我的尝试是在数据库中标记自定义jsp中显示的特定行数。我可以标记记录并正确读取他们的行ID(我已经测试过了)。所以我试图在自定义servlet中使用HQL删除标记的行但是没有删除记录我不确定是否需要对持久性文件进行额外配置。 欢迎对servlet中的HQL DELETE或UPDATE做出任何贡献,我的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>");

    }
}

1 个答案:

答案 0 :(得分:0)

您需要提交您的交易。尝试添加

filter()
在你的for循环之后

,以便所有删除事务将一起提交。