Hibernate で Spring Data JPA を使用しています。
データベース テーブルにマップされた複合キーを持つクラスがあります。
JPARepository 拡張インターフェース オブジェクトを使用して保存操作を実行すると、コンソールに次のログが表示されます。
Hibernate: select rolefuncti0_.functionalityId as function1_4_0_, rolefuncti0_.roleId as roleId2_4_0_ from RoleFunctionality_Mapping rolefuncti0_ where rolefuncti0_.functionalityId=? and rolefuncti0_.roleId=?
Hibernate: insert into RoleFunctionality_Mapping (functionalityId, roleId) values (?, ?)
これは、同じデータで操作を繰り返すときに表示されるものです。
Hibernate: select rolefuncti0_.functionalityId as function1_4_0_, rolefuncti0_.roleId as roleId2_4_0_ from RoleFunctionality_Mapping rolefuncti0_ where rolefuncti0_.functionalityId=? and rolefuncti0_.roleId=?
Spring Data は、最初にキーがデータベースに存在するかどうかを確認してから、挿入を実行しているようです。
hibernate が見つけた情報 (データベース エントリ/キーがデータベースに存在すること) をキャッチする方法が必要ですか? どうすればそれを確認できますか?