sql >> Databáze >  >> RDS >> Mysql

Zpracování výjimek EntityManager v session bean

Mám návrh, který používám ve své aplikaci. Můžeme načíst SQLException z PersistenceException . Poté zkuste získat sql error code pro SQLException . Pokud je vaším požadavkem získat sql error code , můžete následovat můj příklad;

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";
}

Příklad konfigurace chybového kódu 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. Jak upgradovat PostgreSQL z verze 9.6 na verzi 10.1 bez ztráty dat?

  2. Jak řešit problémy s databází MySQL

  3. JSON_INSERT() vs JSON_SET() vs JSON_REPLACE() v SQLite

  4. Pokus o připojení ke vzdálenému hostiteli MySQL (chyba 2003)