|
|
|
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
|
|||
|---|---|---|---|
|
#18+
Приложение использует 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. Уже голову сломал, какие настройки поковырять. Прошу помощи у спецов, в какую сторону копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 05:58:50 |
|
||
|
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
|
|||
|---|---|---|---|
|
#18+
АлексейКв, Видимо код кривой, неправильно сохраняет объекты. Падает не всегда скорее всего из-за нюансов логики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 09:32:29 |
|
||
|
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
|
|||
|---|---|---|---|
|
#18+
Код простейший (код на питоне), вызов формы, и логика везде всегда одинаковая. 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 = [] Но на одних машинах работает на других нет. Версии компонентов более-менее одинаковые, операционки отличаются, но нет корреляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 11:00:11 |
|
||
|
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
|
|||
|---|---|---|---|
|
#18+
Подозреваю что это бага jasperserver. Стоит им в трекер засабмитить ещё. Возможно через конфигурацию можно отключить его логирование в базу. Именно с ним что-то не так: .logging.access.domain.hibernate.RepoAccessEvent ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 11:20:56 |
|
||
|
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
|
|||
|---|---|---|---|
|
#18+
Попробуй сейчас. Только одного не могу понять, почему при прочих равных, на одной машине работает, на другой нет. Понятно, что настройки среды должны влиять, но какие? Локализация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 11:35:20 |
|
||
|
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
|
|||
|---|---|---|---|
|
#18+
АлексейКв, Недавно я боролся с этой "проблемой". Посмотри, в этом форуме. 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 не знает какой из двух объектов свежее и какой сохранять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2013, 23:49:56 |
|
||
|
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
|
|||
|---|---|---|---|
|
#18+
Шаров Сергей1) У тебя в разных сессиях были загружены 2 объекта с одним и тем же ID. Третий объект содержит в себе ссылки на оба этих объекта. При сохранении третьего объекта, появляется эта ошибка, т.к. Hibernate не знает какой объект из двух с одним ID "правильный". Он вообще Hibernate код не пишет. Он юзает JasperServer в котором бага приводит к этой ошибке. Фиксть JasperServer автор этой темы, подозреваю не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 00:24:14 |
|
||
|
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
|
|||
|---|---|---|---|
|
#18+
Шаров Сергей1) У тебя в разных сессиях были загружены 2 объекта с одним и тем же ID. Третий объект содержит в себе ссылки на оба этих объекта. При сохранении третьего объекта, появляется эта ошибка, т.к. Hibernate не знает какой объект из двух с одним ID "правильный". Он вообще Hibernate код не пишет. Он юзает JasperServer в котором бага приводит к этой ошибке. Фиксть JasperServer автор этой темы, подозреваю не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 00:26:17 |
|
||
|
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
|
|||
|---|---|---|---|
|
#18+
Шаров СергейБудь осторожен. 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) Однако в данном случае, похоже, ошибка действительно возникает в дебрях логгера Джаспера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 00:31:39 |
|
||
|
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
|
|||
|---|---|---|---|
|
#18+
>Шаров Сергей Я разбирался с Hibernate и причину ошибки в общем понимаю. Но я нем могу изменить код, я использую готовое приложение, которое юзает JasperServer. Код приложения элементарный и нет там никакой хитрой логики, запрос к JasperServer -> показ формы для ввода фильтра -> передача фильтра -> построение отчета JasperServer. Но на одной машине ошибка есть, на другой нет. Выставлял одинаковые настройки, права одинаковые, пробовал обновлять библиотеки hibernate, jdbc. Ошибка на одной машине не уходит, на другой не появляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 11:12:37 |
|
||
|
Вопрос для знающих Ошибка приложения HibernateSystemException: a different object with
|
|||
|---|---|---|---|
|
#18+
АлексейКв >Шаров Сергей Я разбирался с Hibernate и причину ошибки в общем понимаю. Но я нем могу изменить код, я использую готовое приложение, которое юзает JasperServer. Код приложения элементарный и нет там никакой хитрой логики, запрос к JasperServer -> показ формы для ввода фильтра -> передача фильтра -> построение отчета JasperServer. Но на одной машине ошибка есть, на другой нет. Выставлял одинаковые настройки, права одинаковые, пробовал обновлять библиотеки hibernate, jdbc. Ошибка на одной машине не уходит, на другой не появляется. Вам нужен Java программист, который сможет продебажить код и посмотреть разницу. Работы на пару часов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2013, 11:13:36 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=59&tid=2129345]: |
0ms |
get settings: |
18ms |
get forum list: |
25ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
53ms |
get topic data: |
18ms |
get forum data: |
4ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 312ms |
| total: | 513ms |

| 0 / 0 |
