Для моего проекта я должен разрешить пользователю удалять некоторые записи базы данных. Но в моем случае это должно произойти сейчас, потому что в базе данных есть некоторые ограничения. Я не могу показать базу данных DDL, потому что мне не разрешено.
Проблема в том, что код не выдает никакой ошибки, поэтому в результате появляется сообщение о том, что элемент был удален. Но, конечно, это не удастся, потому что нарушение ограничения.
Так что в данный момент я дам Пользователю положительный отзыв об этом действии, но он должен быть отрицательным. Элемент по-прежнему находится в базе данных, и это может сбить пользователя с толку, если элемент не будет удален. Если нарушение ограничения отсутствует, объект будет удален.
Мой код для удаления сущностей выглядит следующим образом, T определяется в расширяющих классах, чтобы не дублировать код.
Заранее спасибо!
public void delete(final T item) throws DAOException {
EntityManager entityManager = EntityManagerFactoryCentral.getEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
try {
transaction.begin();
entityManager.remove(entityManager.contains(item) ? item : entityManager.merge(item));
transaction.commit();
} catch (Exception ex) {
ex.printStackTrace();
try {
transaction.rollback();
} catch (Exception rollbackEx) {
logDatabaseError(rollbackEx);
}
logDatabaseError(ex);
throw new DAOException(ex.getMessage(), ex);
} finally {
entityManager.close();
}
logTransactionSuccess(item, REMOVED_FROM);
}