私はユーザ提供の電子メールアドレスを、自動生成値ではなくプライマリキーとして使用するサブスクライバエンティティを持っています。これは、JpaRepositoryのsaveメソッドが呼び出されたときに、プライマリキーの値がで、NULLがではないことを意味します。SpringデータJPAでは、主キーがnullでない場合にエンティティをペリスト化できません。
春データJPA documentationセクション2.2.1表2.2次の言葉:デフォルト春データJPAことで
は、与えられた のエンティティのID-プロパティを検査します。 Id-Propertyがヌルの場合、エンティティは とみなされ、そうでない場合は新しいものとみなされます。
この動作により、新しいSubscriberエンティティがデータベースに保持されなくなります。
そうではありません。レポは入力エンティティにIDが存在するので、EntityManager.merge()を内部的に呼び出します。これはエンティティを保存する必要があります。あなたは 'repository.save()'の戻り値を管理されたエンティティとして取ることを忘れないでください。 –
@AdrianShumあなたは正しいです。それは今働く。ただし、重複は検出されません。同じエンティティを2回保存しようとすると、2回目に自動生成されたキーで重複した例外が発生しません。むしろ同じエンティティが更新されます。これは私が望むものではありません。 – Amit