Hibernate AssertionFailure - PullRequest
       2

Hibernate AssertionFailure

0 голосов
/ 03 мая 2011

Когда я пытаюсь сохранить новый объект в базе данных, у меня появляется следующая ошибка:

org.hibernate.AssertionFailure: null id in xxx.nameBean entry (don't flush the Session after an exception occurs)

создается с кодом

 session.save(nameBean)

, но "волшебным образом" это толькопоявляется на производственном сервере.Когда я пытаюсь воспроизвести ошибку на локальном хосте, с тем же кодом и данными (используя копию БД Production Server, через файл bak), она работает нормально.

Что это может быть?

РЕДАКТИРОВАТЬ: Добавление кода, который, вероятно, вызывает ошибку.Целью этого кода является сохранение компонента и обновление другого компонента в той же транзакции, поэтому, если что-то не так, происходит откат.

public class BeanDao extends ManagedSession {

public Integer save(Bean bean) {
    Session session = null;
    try {
        session = createNewSessionAndTransaction();

        Integer idValoracio = (Integer) session.save(bean);
        doOtherAction(bean);

        commitTransaction(session);

        return idBean;
    } catch (RuntimeException re) {
        log.error("get failed", re);
        if (session != null) {
            rollbackTransaction(session);
        }
        throw re;
    }
}

private void doOtherAction(Bean bean) {
    Integer idOtherBean = bean.getIdOtherBean();
    OtherBeanDao otherBeanDao = new OtherBeanDao();
    OtherBean otherBean = otherBeanDao.findById(idOtherBean);
    .
    .
    .
    otherBeanDao.attachDirty(otherBean)
}
}

1 Ответ

1 голос
/ 03 мая 2011

Как говорится в сообщении об ошибке, это, вероятно, вызвано попыткой использовать сеанс после того, как возникло исключение. Убедитесь, что ваш код не поглощает никаких исключений Hibernate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...