Desafortunadamente, Hibernate no admite restricciones diferidas.https://hibernate.atlassian.net/ navegar/HHH-2248
Podría intentar jugar con el método entityManager.flush(), digamos que tiene instrumentos con nombres inst1 y 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");
Alternativamente, puede obtener las entidades de la base de datos, eliminarlas de la base de datos, realizar el vaciado y conservar las entidades actualizadas. De esta forma no tienes que inventarte el tercer nombre.
No estoy seguro sobre el efecto de rendimiento de esas soluciones, tiene que averiguarlo usted mismo.