sql >> Databasteknik >  >> RDS >> Mysql

EntityManager undantagshantering i session bean

Jag har ett förslag som jag använder i min ansökan. Vi kan hämta SQLException från PersistenceException . Efter det, försök att få sql error code för SQLException . Om ditt krav är att få sql error code , du kan följa mitt exempel;

public void insert(Group group) throws DAOException {
    try {
        //your operation
        em.flush();
        logger.debug("insert() method has been successfully finisehd.");
    } catch (PersistenceException pe) {
        String sqlErroCode = getErrorCode(pe);
        // do your operation based on sql errocode
    }
}

protected String getErrorCode(RuntimeException e) {
    Throwable throwable = e;
    while (throwable != null && !(throwable instanceof SQLException)) {
        throwable = throwable.getCause();
    }
    if (throwable instanceof SQLException) {
        Properties properties = --> load sql error code form configuration file.
        SQLException sqlex = (SQLException) throwable;
        String errorCode = properties.getProperty(sqlex.getErrorCode() + "");
        return errorCode;
    }
    return "NONE";
}

Exempel på felkodskonfiguration av mysql

mysql_error_code.properties

#MySQL Database
1062=DUPLICATE_KEY_FOUND
1216=CHILD_RECORD_FOUND
1217=PARENT_RECORD_NOT_FOUND
1048=NULL_VALUE_FOUND
1205=RECORD_HAS_BEEN_LOCKED 



  1. Hur man hämtar data från mysql-databasen

  2. Åtgärda fel:"SELECTs till vänster och höger om UNION har inte samma antal resultatkolumner" i SQLite

  3. Får fel Olaglig blandning av sammanställningar (utf8mb4_unicode_ci,IMPLICIT) och (utf8mb4_general_ci,IMPLICIT) för operation '='

  4. MySQL Multi-Table Gå med