powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
11 сообщений из 11, страница 1 из 1
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
    #38259512
АлексейКв
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приложение использует 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
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
    #38259621
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейКв,

Видимо код кривой, неправильно сохраняет объекты. Падает не всегда скорее всего из-за нюансов логики.
...
Рейтинг: 0 / 0
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
    #38259800
АлексейКв
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код простейший (код на питоне), вызов формы, и логика везде всегда одинаковая.
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
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
    #38259835
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю что это бага jasperserver. Стоит им в трекер засабмитить ещё. Возможно через конфигурацию можно отключить его логирование в базу. Именно с ним что-то не так:
.logging.access.domain.hibernate.RepoAccessEvent
...
Рейтинг: 0 / 0
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
    #38259874
АлексейКв
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй сейчас. Только одного не могу понять, почему при прочих равных, на одной машине работает, на другой нет. Понятно, что настройки среды должны влиять, но какие? Локализация?
...
Рейтинг: 0 / 0
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
    #38261162
Шаров Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейКв,

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

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
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
    #38261176
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаров Сергей1) У тебя в разных сессиях были загружены 2 объекта с одним и тем же ID. Третий объект содержит в себе ссылки на оба этих объекта.
При сохранении третьего объекта, появляется эта ошибка, т.к. Hibernate не знает какой объект из двух с одним ID "правильный".

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

Он вообще Hibernate код не пишет. Он юзает JasperServer в котором бага приводит к этой ошибке. Фиксть JasperServer автор этой темы, подозреваю не будет.
...
Рейтинг: 0 / 0
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
    #38261180
ARGB32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаров СергейБудь осторожен.
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
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
    #38261569
АлексейКв
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Шаров Сергей

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

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


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