Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 互換編


8.4.3 エンティティに対するremove操作

エンティティに対するremove操作を実行するには,EntityManagerのremoveメソッドを呼び出します。EntityManagerのremoveメソッドを呼び出したり,remove処理がカスケードされたりすると,エンティティはremoved状態になります。removed状態のエンティティはトランザクションのコミット処理でデータベースから削除されます。

次の表に,remove操作後のエンティティの状態をエンティティの状態ごとに示します。

表8‒10 remove操作でのエンティティの状態

エンティティの状態

状態遷移の結果

new

remove操作は無視されます。ただし,エンティティからほかのエンティティへのリレーションシップのcascade属性にREMOVEまたはALLが指定されていると,このエンティティが参照するエンティティにremove操作が伝播されます。

managed

removedに遷移します。エンティティからほかのエンティティへのリレーションシップのcascade属性にREMOVEまたはALLが指定されていると,このエンティティが参照するエンティティにremove操作が伝播されます。

detached

次のように遷移します。

  • 引数で渡されたdetached状態のエンティティに対応する行がデータベースに存在する場合,remove操作時にIllegalArgumentExceptionがスローされます。

  • CJPAプロバイダの場合,データベースに対応する行が存在しないときには,remove操作は無視されます。ただし,ほかのエンティティへのリレーションシップのcascade属性にREMOVEまたはALLが指定されていれると,このエンティティが参照するエンティティにremove操作が伝播されます。

removed

remove操作は無視されます。ほかのエンティティへの伝播もしません。

注1 removed状態のエンティティはトランザクションのコミット時,トランザクションのコミット前,またはflush操作時の実行結果としてデータベースから削除されます。

注2 エンティティが削除されたあと,エンティティの内容はremove処理が呼び出された直後の内容になります。ただし,エンティティの生成直後の場合を除きます。