5

私のテーブルには、一意の制約があります。休止状態では、その制約に違反するアイテムを追加すると、それをキャッチしたいので、アイテムを作成する代わりに更新します。

try-catch ブロックを設定しない場合

    updated = query.executeUpdate();

次のエラーが発生します

    Caused by: org.hsqldb.HsqlException: integrity constraint violation: unique constraint or index violation: WEEKROOSTERITEMUNI

次のtry-catchブロックを設定すると

    try {
        updated = query.executeUpdate();

     }    
   catch(PersistenceException e){                                                         
        LOG.debug("this is PersistenceException exception throw");      
    } 

次のエラーが発生します

    Caused by: javax.persistence.RollbackException: Transaction marked as rollbackOnly

「ConstraintViolationException」をキャッチすると、制約例外が発生し続け、何もキャッチされません。

    Caused by: org.hsqldb.HsqlException: integrity constraint violation: unique constraint or index violation: WEEKROOSTERITEMUNI

どうすればこれをキャッチできますか?

4

2 に答える 2

0

一意の制約をキャッチするには、この例外 ConstraintViolationException をキャッチする必要があります

于 2013-11-14T08:57:10.457 に答える