HQL delete在java servlet中不起作用
我正在处理HQL delete查询。我有一个自定义jsp,它根据特定条件显示数据库中的一些记录。我的尝试是从数据库中标记自定义jsp中显示的特定数量的行。我可以标记记录并正确读取它们的行id(我已经测试过了)。因此,我试图在定制servlet中使用HQL删除标记行,但记录没有被删除,我不确定是否需要对持久性文件进行额外配置。 欢迎对servlet中的HQL删除或更新做出任何贡献。我的servlet代码如下HQL delete在java servlet中不起作用,java,Java,我正在处理HQL delete查询。我有一个自定义jsp,它根据特定条件显示数据库中的一些记录。我的尝试是从数据库中标记自定义jsp中显示的特定数量的行。我可以标记记录并正确读取它们的行id(我已经测试过了)。因此,我试图在定制servlet中使用HQL删除标记行,但记录没有被删除,我不确定是否需要对持久性文件进行额外配置。 欢迎对servlet中的HQL删除或更新做出任何贡献。我的servlet代码如下 package net.billing.deleterecords; import ja
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()解决了我的问题非常感谢您的帮助,只需将您的问题标记为已回答…:)让我做一个聪明的人