За съжаление, Hibernate няма поддръжка за отложени ограничения.https://hibernate.atlassian.net/ преглед/HHH-2248
Можете да опитате да играете с метода entityManager.flush(), да кажем, че имате инструменти с имена inst1 и 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, да извършите промиване и да запазите актуализираните обекти. По този начин не е нужно да измисляте третото име.
Не сте сигурни за ефекта на производителността на тези решения, трябва да разберете сами.