Desværre har Hibernate ikke understøttelse af udskudte begrænsninger.https://hibernate.atlassian.net/ browse/HHH-2248
Du kan prøve at spille med entityManager.flush() metoden, lad os sige, at du har instrumenter med navne inst1 og 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");
Alternativt kan du hente entiteterne fra DB, slette dem fra DB, udføre flush og fortsætte med at opdatere entiteter. På denne måde behøver du ikke finde på det tredje navn.
Ikke sikker på ydeevneeffekten af disse løsninger, du skal selv finde ud af det.