Rất tiếc, Hibernate không có hỗ trợ cho các ràng buộc hoãn lại. https://hibernate.atlassian.net/ duyệt / HHH-2248
Bạn có thể thử chơi với phương thức entityManager.flush (), giả sử bạn có Dụng cụ có tên inst1 và 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");
Ngoài ra, bạn có thể lấy các thực thể từ DB, xóa chúng khỏi DB, thực hiện xóa và duy trì các thực thể được cập nhật. Bằng cách này, bạn không phải tạo tên thứ ba.
Không chắc chắn về hiệu quả hoạt động của các giải pháp đó, bạn phải tự tìm hiểu.