Я работаю над функцией удаления, которая обновляет объект, если он присутствует в другом объекте. В моем примере я удаляю элементы из счета, поэтому я хотел бы переименовать элемент как «удаленный», если hibernate выдает исключение постоянства.
Сначала я попытался:
public boolean delete(T entity) {
LOGGER.info("I want to delete: " + entity);
try {
getCurrentSession().remove(entity);
getCurrentSession().flush();
}catch (PersistenceException exception){
LOGGER.error("returning false");
getCurrentSession().update(entity);
return false;
}
return true;
}
Я получаю
org.hibernate.ObjectDeletedException: удаленный экземпляр передан в update ()
Я думаю, это потому, что мне нужно закрыть текущий сеанс и работать на еще один, поэтому я попытался:
public boolean delete(T entity) {
LOGGER.info("I want to delete: " + entity);
try {
getCurrentSession().remove(entity);
getCurrentSession().flush();
}catch (PersistenceException exception){
LOGGER.error("returning false");
session.close();
session = getSessionFactory().openSession();
getCurrentSession().update(entity);
return false;
}
return true;
}
Но это дает мне
Ошибка обработки запроса; вложенное исключение: java .lang.IllegalStateException: транзакция уже активна
Я пытался использовать вторую транзакцию вместо повторного использования той же самой, но в конечном итоге с той же ошибкой