PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Une contrainte INITIALLY DEFERRED peut-elle être définie à l'aide d'une annotation Hibernate ?

Malheureusement, Hibernate ne prend pas en charge les contraintes différées.https://hibernate.atlassian.net/ parcourir/HHH-2248

Vous pouvez essayer de jouer avec la méthode entityManager.flush(), disons que vous avez des instruments avec des noms inst1 et 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");

Vous pouvez également obtenir les entités de la base de données, les supprimer de la base de données, effectuer un vidage et conserver les entités mises à jour. De cette façon, vous n'avez pas à inventer le troisième nom.

Vous n'êtes pas sûr de l'effet de ces solutions sur les performances, vous devez vous débrouiller vous-même.