Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with / 11 сообщений из 11, страница 1 из 1
16.05.2013, 05:58:50
    #38259512
АлексейКв
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
Приложение использует Tomcat для построения отчетов. При вызове формы отчета появляется ошибка.
org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Axis2Servlet threw exception
org.springframework.orm.hibernate3.HibernateSystemException: a different object with the same identifier value was already associated with the session: [com.jaspersoft.jasperserver.api.logging.access.domain.hibernate.RepoAccessEvent#1]; nested exception is org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.jaspersoft.jasperserver.api.logging.access.domain.hibernate.RepoAccessEvent

НО на некоторых машинах приложение работает нормально, на других появляется ошибка. Версия Java и Tomcat одинаковые. Везде все процессы запускаются под админом. Я не работал плотно ни с Java, ни с Tomcat. Уже голову сломал, какие настройки поковырять. Прошу помощи у спецов, в какую сторону копать?
...
Рейтинг: 0 / 0
16.05.2013, 09:32:29
    #38259621
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
АлексейКв,

Видимо код кривой, неправильно сохраняет объекты. Падает не всегда скорее всего из-за нюансов логики.
...
Рейтинг: 0 / 0
16.05.2013, 11:00:11
    #38259800
АлексейКв
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
Код простейший (код на питоне), вызов формы, и логика везде всегда одинаковая.
def loadReport(self):
self.runButton.clicked.disconnect(self.loadReport)
self.current_report = self.model.getReport(self.listView.currentIndex())
report_id = self.current_report['id']
if report_id:
self.requestReport.emit(report_id)
# Remove old controls
for control in self.controls:
self.controlsLayout.removeWidget(control)
sip.delete(control)
self.controls = []

Но на одних машинах работает на других нет. Версии компонентов более-менее одинаковые, операционки отличаются, но нет корреляции.
...
Рейтинг: 0 / 0
16.05.2013, 11:20:56
    #38259835
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
Подозреваю что это бага jasperserver. Стоит им в трекер засабмитить ещё. Возможно через конфигурацию можно отключить его логирование в базу. Именно с ним что-то не так:
.logging.access.domain.hibernate.RepoAccessEvent
...
Рейтинг: 0 / 0
16.05.2013, 11:35:20
    #38259874
АлексейКв
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
Попробуй сейчас. Только одного не могу понять, почему при прочих равных, на одной машине работает, на другой нет. Понятно, что настройки среды должны влиять, но какие? Локализация?
...
Рейтинг: 0 / 0
16.05.2013, 23:49:56
    #38261162
Шаров Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
АлексейКв,

Недавно я боролся с этой "проблемой". Посмотри, в этом форуме.

1) Почему возникает ошибка
2) Почему не всегда и не везде возникает

1) У тебя в разных сессиях были загружены 2 объекта с одним и тем же ID. Третий объект содержит в себе ссылки на оба этих объекта.
При сохранении третьего объекта, появляется эта ошибка, т.к. Hibernate не знает какой объект из двух с одним ID "правильный".

Например, если ты изменял один и второй объект, встаёт вопрос, какой объект сохранять Hibernate-у? Ответа нет. Поэтому он специально генерит Exception.

Можно вместо save и saveOrUpdate использовать merge. Последний совмещает изменения из обоих объектов в один и сохраняет без Exception.

Будь осторожен.
merge гад, для autoincrement полей типа ID не возвращает новый ID в объект после сохранения, как это делает save.
Например,

Person p = new Person()
// p.getId() == null
getTemplateHibernate.save(p)
// p.getId() != null

А если
getTemplateHibernate.merge(p)
Объект сохранится, но p.getId() останется пустой == null :(

2) Эта ошибка возникает когда ты используешь разные объекты с одним ID в третьем объекте, если же ID разные - то ошибки нет.

Наример, у тебя класс Org - организация, у которого 2 свойства типа Person - руководитель и бухгалтер. Ты делаешь 2 набора сотрудников в разных сессиях (например, у тебя DAO функция возвращает список сотрудников, при этом функция создаёт новую сессию Hibernatate на каждый запуск) в обоих наборах есть Иванов ID=1. Вроде сущность одна, и ID у них один, но объекты разные - посмотри на адреса объектов!

Ошибка будет возникать при сохранении Org, тогда и только тогда, когда и руководитель и бухгалтер будет Иванов ID=1. Точнее, когда в Org будет ссылки на разные объекты с одинаковым ID.

Если ID разные, то не смотря, но то, что объекты получались в разных сессиях ошибки при сохранении стретьего объекта не будет.
Просто, как я писал, Hibernate не знает какой из двух объектов свежее и какой сохранять.
...
Рейтинг: 0 / 0
17.05.2013, 00:24:14
    #38261176
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
Шаров Сергей1) У тебя в разных сессиях были загружены 2 объекта с одним и тем же ID. Третий объект содержит в себе ссылки на оба этих объекта.
При сохранении третьего объекта, появляется эта ошибка, т.к. Hibernate не знает какой объект из двух с одним ID "правильный".

Он вообще Hibernate код не пишет. Он юзает JasperServer в котором бага приводит к этой ошибке. Фиксть JasperServer автор этой темы, подозреваю не будет.
...
Рейтинг: 0 / 0
17.05.2013, 00:26:17
    #38261177
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
Шаров Сергей1) У тебя в разных сессиях были загружены 2 объекта с одним и тем же ID. Третий объект содержит в себе ссылки на оба этих объекта.
При сохранении третьего объекта, появляется эта ошибка, т.к. Hibernate не знает какой объект из двух с одним ID "правильный".

Он вообще Hibernate код не пишет. Он юзает JasperServer в котором бага приводит к этой ошибке. Фиксть JasperServer автор этой темы, подозреваю не будет.
...
Рейтинг: 0 / 0
17.05.2013, 00:31:39
    #38261180
ARGB32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
Шаров СергейБудь осторожен.
merge гад, для autoincrement полей типа ID не возвращает новый ID в объект после сохранения, как это делает save.
Например,

Person p = new Person()
// p.getId() == null
getTemplateHibernate.save(p)
// p.getId() != null

А если
getTemplateHibernate.merge(p)
Объект сохранится, но p.getId() останется пустой == null :(

При использовании merge() надо результат получать и далее с ним работать:
p = getTemplateHibernate.merge(p)

Однако в данном случае, похоже, ошибка действительно возникает в дебрях логгера Джаспера.
...
Рейтинг: 0 / 0
17.05.2013, 11:12:37
    #38261569
АлексейКв
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
>Шаров Сергей

Я разбирался с Hibernate и причину ошибки в общем понимаю. Но я нем могу изменить код, я использую готовое приложение, которое юзает JasperServer. Код приложения элементарный и нет там никакой хитрой логики, запрос к JasperServer -> показ формы для ввода фильтра -> передача фильтра -> построение отчета JasperServer. Но на одной машине ошибка есть, на другой нет. Выставлял одинаковые настройки, права одинаковые, пробовал обновлять библиотеки hibernate, jdbc. Ошибка на одной машине не уходит, на другой не появляется.
...
Рейтинг: 0 / 0
17.05.2013, 11:13:36
    #38261572
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
АлексейКв >Шаров Сергей

Я разбирался с Hibernate и причину ошибки в общем понимаю. Но я нем могу изменить код, я использую готовое приложение, которое юзает JasperServer. Код приложения элементарный и нет там никакой хитрой логики, запрос к JasperServer -> показ формы для ввода фильтра -> передача фильтра -> построение отчета JasperServer. Но на одной машине ошибка есть, на другой нет. Выставлял одинаковые настройки, права одинаковые, пробовал обновлять библиотеки hibernate, jdbc. Ошибка на одной машине не уходит, на другой не появляется.
Вам нужен Java программист, который сможет продебажить код и посмотреть разницу. Работы на пару часов.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]