0
2つのデータベーステーブルroleとrole_menuがあります。役割の主キーを参照する外部キーがrole_menuにあります。整合性制約の削除エラーをどのように捕捉するのですか?
これで、role_menuに関連付けられた外部キーを持つ行が削除されました。それでは、どのように整合性制約の削除に対処する
WARN : org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 2292, SQLState: 23000
ERROR: org.hibernate.engine.jdbc.spi.SqlExceptionHelper - ORA-02292: integrity constraint (PTA.FK_ROLE_MEN_R_ROLE_ME_ROLE) violated - child record found
:私はこれらのテキストを持ってコンソールで
@Override
@Transactional
public void delete(String role_code) {
try {
sessionFactory.getCurrentSession().delete((Role) sessionFactory.getCurrentSession().get(Role.class, role_code));
} catch (Exception e) {
System.out.println("error : there is fk !");
}
}
:私は、tryキャッチ内部の削除コードを囲むしようとしましたが、実行は、catchブロックに入りません。エラー?
トランザクションはすでにロールバックとしてマークされているため、別のレベルでそれをキャッチすることはできません。とにかく、これはすべて非常に悪い考えであり、いくつかの原則を破っています。 http://docs.jboss.org/hibernate/core/3.5/api/org/hibernate/Session.html「セッションで例外がスローされた場合、トランザクションをロールバックしてセッションを破棄しなければなりません。セッションの内部状態例外が発生した後にデータベースと一貫性がない可能性があります。 – Gab
別のレベルで例外をキャッチすることは、トランザクションが他のレベルで作成されてからこの関数に伝播することを意味します... –