ホームページ >Java >&#&チュートリアル >Spring Data JPA @Query の更新が機能しないのはなぜですか: EntityManager フラッシュの謎?
Spring Data JPA の更新 @Query が更新されない: フラッシュのジレンマ
Spring Data JPA の更新操作に @Query アノテーションを使用すると、 EntityManager の動作を理解するために重要です。デフォルトでは、EntityManager はデータベースへの変更を自動的にフラッシュしません。これにより、更新が無視されたように見える、予期しない結果が生じる可能性があります。
提供されたコードの場合、管理エンティティに加えられた変更が更新クエリ後にデータベースにフラッシュされなかったため、統合テストは失敗しました。 。この問題を解決するには、clearAutomatically = true オプションを @Modifying アノテーションとともに使用することをお勧めします:
@Modifying(clearAutomatically = true) @Transactional @Query("UPDATE Admin SET firstname = :firstname, lastname = :lastname, login = :login, superAdmin = :superAdmin, preferenceAdmin = :preferenceAdmin, address = :address, zipCode = :zipCode, city = :city, country = :country, email = :email, profile = :profile, postLoginUrl = :postLoginUrl WHERE id = :id") public void update(@Param("firstname") String firstname, @Param("lastname") String lastname, ...);
このオプションを追加すると、更新クエリの実行後に EntityManager が自動的に変更をフラッシュし、これらはデータベースに保存されます。
追加の観察:
以上がSpring Data JPA @Query の更新が機能しないのはなぜですか: EntityManager フラッシュの謎?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。