ホームページ  >  記事  >  Java  >  ## Spring Data JPA @Query の更新がエンティティに反映されないのはなぜですか?

## Spring Data JPA @Query の更新がエンティティに反映されないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-27 10:39:02513ブラウズ

## Why is My Spring Data JPA @Query Update Not Reflecting in the Entity?

Spring Data JPA @Query を使用して更新されない

Spring Data JPA では、提供された更新クエリがエンティティの更新に失敗し、テスト失敗。

パラメータ化された値を使用するためにクエリに必要な変更を実装したにもかかわらず、更新されたフィールドは影響を受けず、初期値が保持されます。検索操作の直前にフラッシュ操作を追加しても問題は解決しません。

生成された SQL ステートメントを調べると、更新クエリは正しく実行されていますが、変更されたエンティティを取得するクエリは正しく実行されていないことがわかります。無視されました。これは、潜在的なキャッシュの問題を示唆しています。

ただし、他のファインダーへの呼び出しを追加すると、更新された値が取得されたオブジェクトに反映されます。この動作は一貫性がなく、予期せぬものです。

さらに、変更されたエンティティを取得する SQL ステートメントには制限 2 句が含まれていますが、Spring Data は単一のオブジェクトを返すときに常に制限 1 句を使用する必要があると想定されています。

興味深いことに、生成された SQL ステートメントを MySQL クライアントで手動で実行すると、ロジックは問題なく機能し、なぜこの動作が Java レベルで一貫して反映されないのかという疑問が生じます。

この問題の根本原因これは、変更を自動的にフラッシュしない EntityManager のデフォルトの動作にあります。これを解決するには、 @Modifying アノテーションで clearAutomatically オプションを有効にして、更新クエリの直後に変更がフラッシュされるようにする必要があります。

以上が## Spring Data JPA @Query の更新がエンティティに反映されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。