PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Uma restrição INICIALMENTE DIFERIDA pode ser definida usando uma anotação do Hibernate?


Infelizmente, o Hibernate não tem suporte para restrições adiadas.https://hibernate.atlassian.net/ navegar/HHH-2248

Você pode tentar jogar com o método entityManager.flush(), digamos que você tenha instrumentos com nomes inst1 e 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, você pode obter as entidades do banco de dados, excluí-las do banco de dados, executar a limpeza e persistir as entidades atualizadas. Dessa forma, você não precisa inventar o terceiro nome.

Não tenho certeza sobre o efeito de desempenho dessas soluções, você precisa descobrir por si mesmo.