コンテナ管理のトランザクションを使用するインターフェイスを備えた@Stateless
EJBがあります。つまり、メソッドが呼び出された後、システム例外がスローされない場合、トランザクションはコンテナによって自動的にコミットされます。@WebService
一意の制約がある列に同じ値を持つ2つのオブジェクトを試行するEntityManager.persist(...)
と、コンテナーはPersistenceException
コードの外部でコミット時にクライアントにをスローします。この例外をキャッチして、自分のアプリケーション例外を再スローできるようにするにはどうすればよいですか?
コミット時に例外をキャッチするには、メソッドでトランザクションを手動でコミットする必要がありますか?(そしてそれEntityManager.flush()
を行う正しい方法はありますか?)もしそうなら、コンテナー管理トランザクションを持つことのポイントは何ですか?