0
У меня есть следующие услуги:Hibernate. нарушает ограничение внешнего ключа в кэше
@Service
@Transactional
public class blablaService{
....
@Override
public void deleteSystemGroups(Set<Long> ids) {
List<Terminal> terminals = terminalDao.findAll();
Set<SystemGroup> systemGroupsToDelete = systemGroupDao.getByIds(ids);
for (Terminal terminal: terminals) {
terminal.getTerminalSystemGroupsSet().removeAll(systemGroupsToDelete); // important
terminalDao.updateTerminal(terminal);
}
systemGroupDao.delete(ids); // important
}
}
и следующий дао:
public boolean updateTerminal(Terminal terminal) {
Session session = sessionFactory.getCurrentSession();
session.update(terminal);
session.flush(); // ATTENTION HERE!!!
return true;
}
Сейчас он работает, но если удалить линии
session.flush();
я вижу следующее сообщение об ошибке :
org.postgresql.util.PSQLException: ERROR: update or delete on table "system_group" violates foreign key constraint "fk2593ed524a9b4be6" on table "terminal_system_group"| Detail: Key (group_id)=(2) is still referenced from table "terminal_system_group".
Я понимаю причину проблемы, но я не уверен, что мое исправление хорошо.
Можете ли вы посоветовать лучшее решение?
Я не вижу, что вы уверены, что после прочтения упоминалось linkl я могу реализовать свое желание. – gstackoverflow