sql >> データベース >  >> RDS >> Mysql

セッションBeanでのEntityManager例外処理

    私は自分のアプリケーションで使用している提案があります。 SQLExceptionを取得できます PersistenceExceptionから 。その後、sql error codeを取得してみてください SQLExceptionの場合 。要件がsql error codeを取得することである場合 、あなたは私の例に従うことができます;

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

    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. T-SQLで2つの日付の差を計算する方法

    2. 暗号化せずにAPIのパスワードを安全に保存する

    3. MySQLで増分バックアップを実行するための最良の方法は何ですか?

    4. MariaDB JSON_INSERT()の説明