Erreur:Exception [EclipseLink-4002] (Eclipse Services De Persistance - 2.4.1.v20121003-ad44345): org.eclipse.la persistance.des exceptions.DatabaseException
J'obtiens cette erreur, en raison de la contrainte de clé primaire violation ma question est comment puis-je attraper toutes ces exceptions .
HTTP ERROR 500
Problem accessing /persist_role_servlet. Reason:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Duplicate entry 'sd' for key 'PRIMARY'
Error Code: 1062
Call: INSERT INTO ROLE (ROLE_ID, ROLE_DESC, ROLE_NAME) VALUES (?, ?, ?)
bind => [3 parameters bound]
Query: InsertObjectQuery(com.example.rolessample.role@3f1179)
Caused by:
javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Duplicate entry 'sd' for key 'PRIMARY'
Error Code: 1062
Call: INSERT INTO ROLE (ROLE_ID, ROLE_DESC, ROLE_NAME) VALUES (?, ?, ?)
bind => [3 parameters bound]
Mon servlets code:
package com.example.rolessample;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class persist_role_servlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter out = resp.getWriter();
String role_id = req.getParameter("role_id");
String role_name = req.getParameter("role_name");
String role_desc = req.getParameter("role_desc");
String comp_id = "";
String parent_comp = "";
String permission = "";
role r = new role();
r.setRole_id(role_id);
r.setRole_name(role_name);
r.setRole_desc(role_desc);
//Persisting the role bean .
EntityManager em = EMF.get().createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
em.persist(r);
tx.commit();
String[] checkboxNamesList = req.getParameterValues("component");
for (int i = 0; i < checkboxNamesList.length; i++) {
String[] myCheckBoxValue = req
.getParameterValues(checkboxNamesList[i]);
//If null, it means checkbox is not in request, so unchecked
if (myCheckBoxValue == null) {
component comp = new component();
//Logic for finding component's name,component parent and their permissions.
String S1 = checkboxNamesList[i];
int lastUnderscore = S1.lastIndexOf("_");
permission = S1.substring(lastUnderscore + 1);
comp_id = S1.substring(0, lastUnderscore);
lastUnderscore = comp_id.lastIndexOf("_");
parent_comp = comp_id.substring(0, lastUnderscore);
comp.setComp_id(comp_id);
comp.setParent_comp(parent_comp);
comp.setRole_id(role_id);
comp.setPermission(permission);
//Persisting component bean .
tx.begin();
em.persist(comp);
tx.commit();
}
//if is there, it means checkbox checked
else {
out.println(checkboxNamesList[i] + "=checked");
}
}
//resp.setHeader("Refresh", "0; url=/guestbook.jsp");
}
}
Opérations de base de données directement dans le servlet, mauvaise conception & dépourvue de excpetion d'un mécanisme de gestion. Reportez-vous à la documentation - docs.oracle.com/javase/tutorial/essential/exceptions
Comment puis-je éviter exception d'un mécanisme de gestion ? Je veux dire,il doit lever une exception, et je dois gérer toutes ces . Mais le problème est que je n'ai pas l'exception qui capture et comment ?
Vous pouvez essayer de le trouver dans les journaux, c'est
try{ //la Persistance de la composante de haricot . tx.begin(); em.persist(comp); tx.commit(); } catch (SQLException ex) { System.err.println("Caught IOException:" + ex.getMessage()); }
Comment puis-je éviter exception d'un mécanisme de gestion ? Je veux dire,il doit lever une exception, et je dois gérer toutes ces . Mais le problème est que je n'ai pas l'exception qui capture et comment ?
Vous pouvez essayer de le trouver dans les journaux, c'est
SQLException
enveloppé dans DatabaseException
, prises au plus tard. Avez-vous essayé de passer par le lien fourni, vous aidera à mieux comprendre.try{ //la Persistance de la composante de haricot . tx.begin(); em.persist(comp); tx.commit(); } catch (SQLException ex) { System.err.println("Caught IOException:" + ex.getMessage()); }
OriginalL'auteur Deepesh Shetty | 2013-05-28
Vous devez vous connecter pour publier un commentaire.
Puisque vous êtes en utilisant JPA, il va vous jeter
Mais vous supposez que d'attraper Exception SQL et de ce que vous pouvez obtenir des th SQL ÉTAT
essayer de mettre en œuvre, comme illustré ci-dessous
Méthode pour l'accès Interne à l'Exception de courtoisie Rupesh Kumar Kushwaha Blog
Espère Que Cela Fonctionne 🙂
OriginalL'auteur Holla