Ich habe mit einer HQL-Abfrage zu kämpfen. Ich habe eine benutzerdefinierte jsp, die einige Datensätze aus der Datenbank nach bestimmten Kriterien anzeigt. Mein Versuch ist, eine bestimmte Anzahl von Zeilen, die in einem benutzerdefinierten JSP angezeigt werden, aus der Datenbank zu markieren. Ich kann die Datensätze markieren und ihre Zeilen-IDs richtig lesen (ich habe das getestet). Daher versuche ich, die markierten Zeilen mit HQL im benutzerdefinierten Servlet zu löschen, aber die Datensätze werden nicht gelöscht. Ich bin mir nicht sicher, ob eine zusätzliche Konfiguration für die Persistenzdatei erforderlich ist. Jeder Beitrag über HQL DELETE oder UPDATE in einem Servlet ist mein Code für das Servlet willkommen ist, wie untenHQL löschen funktioniert nicht in einem Java-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>");
}
}
Sie arbeiten mit einer festen oid! 'String oid =" 8a4b301f5b142791015b142c13c50002 ";' – Jens
Sie sollten etwas über Software-Architektur lernen. Verwenden Sie nicht die Persistenzschicht direkt in der Ansicht – Jens
Danke Jens für Beratung Ich habe gerade String oid = "8a4b301f5b142791015b142c13c50002"; für den Fall des Testens nur, wenn das Löschen funktionieren würde. Ich bekomme den Wert von einem anderen JSP zum Servlet – Frank