残念ながら、Hibernateは遅延制約をサポートしていません。
entityManager.flush()メソッドで遊んでみることができます。たとえば、 inst1という名前のInstrumentsがあるとします。 およびinst2 :
Instrument inst1 = entityManager.find(Instrument.class, 1);
// change name of first Instrument to some random one
inst1.setName("inst3");
entityManager.flush();
Instrument inst2 = entityManager.find(Instrument.class, 2);
inst2.setName("inst1");
entityManager.flush();
inst1.setName("inst2");
または、DBからエンティティを取得し、DBから削除し、フラッシュを実行して、更新されたエンティティを永続化することもできます。このようにして、3番目の名前を作成する必要はありません。
これらのソリューションのパフォーマンスへの影響についてはよくわかりません。自分で理解する必要があります。