質問
CascadeType.REFRESH
は実際に何をしますか?
その定義は
ですエンティティを更新すると、このフィールドに保持されているすべてのエンティティも更新されます
しかし、実際にはこれはどういう意味ですか?誰か簡単な例を教えていただけますか?
解決
個々のCascadeTypeの説明は少々混乱する可能性がありますが、一般的なケースから簡単に理解する方法があります。
CascadeType
のいずれかの値については、 EntityManager
インターフェイスを使用してインスタンスで操作 X
が呼び出された場合、そのインスタンス他のエンティティインスタンスへの参照があり、その関連付けに CascadeType.X
が定義されている場合、 EntityManager
操作もその関連付けられたエンティティに適用されます。
したがって、 EntityManager.refresh()
は次のように定義されます:
インスタンスの状態を更新します データベース、行われた変更の上書き 存在する場合はエンティティに。
したがって、エンティティAにエンティティBへの参照があり、その参照に @ CascadeType.REFRESH
の注釈が付けられ、 EntityManager.refresh(A)
が呼び出された場合、 EntityManager.refresh(B)
も暗黙的に呼び出されます。
他のヒント
更新による取得: 更新方法を使用して、管理対象オブジェクトをデータベースから再ロードできます。
メモリ内の管理対象オブジェクトの内容は破棄され(変更がある場合はそれも含む)、データベースから取得されたデータに置き換えられます。これは、エンティティオブジェクトが取得されてから別のEntityManagerによって変更された可能性がある場合に備えて、アプリケーションがエンティティオブジェクトの最新バージョンを確実に処理するために役立ちます。