Tyvärr har Hibernate inte stöd för uppskjutna begränsningar.https://hibernate.atlassian.net/ bläddra/HHH-2248
Du kan prova att spela med metoden entityManager.flush(), låt oss säga att du har instrument med namn inst1 och 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 hämta entiteterna från DB, ta bort dem från DB, utföra spolning och bevara uppdaterade entiteter. På så sätt behöver du inte hitta på det tredje namnet.
Osäker på prestandaeffekten av dessa lösningar, du måste ta reda på det själv.