org.hibernate.NonUniqueObjectException - PullRequest
3 голосов
/ 29 июня 2011

У меня ошибка, когда я хочу удалить объект из базы данных. Ошибка:

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.cartif.database.ApplicationField#asd]

Для удаления объекта я делаю:

public static void delete(Object o){
    if(session == null) createSession();
    Transaction tx = session.beginTransaction();
    tx.begin();
    session.delete(o);
    tx.commit();
}

Когда я вызываю этот метод с объектом, я получаю ошибку. Если я отлаживаю приложение, исключение выдается в tx.begin (); линия.

В базе данных этот объект уникален, как я показываю в столбцах:

         name                   deviceid
         "asd"                     1
"ElectricalConsumption"            1
       "Energy"                    1

Почему это произошло?

Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 29 июня 2011

NonUniqueObjectException генерируется, когда существует объект, уже связанный с сеансом с тем же идентификатором (первичным ключом), что и тот, который вы пытаетесь связать с сеансом.

Обычно это не имеет ничего общего с удалениемmethod сама по себе и имеет больше общего с контекстом , в котором удаление называется

Проверьте место, где вызывается удаление.Проверьте наличие возможных дубликатов объектов в том месте, где вызывается удаление.

Этот вопрос также может помочь.

0 голосов
/ 29 июня 2011

Эта ошибка означает, что вы загрузили один и тот же объект (здесь же подразумевается, что оба объекта имеют одинаковое значение идентификатора) более одного раза в одном сеансе.Это не имеет ничего общего с уникальностью в базе данных.

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