|
|
|
как пофикстить org.hibernate.NonUniqueObjectException ?
|
|||
|---|---|---|---|
|
#18+
Если это что-то прояснит, то если заменить update на merge, то авторHTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalStateException: Error occurred while storing entity [com.epam.hhsystem.model.vacancy.Vacancy@6]. An entity copy [com.epam.hhsystem.model.vacancy.Vacancy#6] was already assigned to a different entity [com.epam.hhsystem.model.vacancy.Vacancy@6]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 13:38:31 |
|
||
|
как пофикстить org.hibernate.NonUniqueObjectException ?
|
|||
|---|---|---|---|
|
#18+
redwhite90, на вторую страницу пошли.... - в апреле у тебя разве не эта тема была? http://www.sql.ru/forum/1017014/hibernate-otnosheniya-mezhdu-tablicami?hl=create table a_b - чем пример тут отличается от много ко много там? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 14:17:05 |
|
||
|
как пофикстить org.hibernate.NonUniqueObjectException ?
|
|||
|---|---|---|---|
|
#18+
redwhite90Если это что-то прояснит, то если заменить update на merge, то авторHTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalStateException: Error occurred while storing entity [com.epam.hhsystem.model.vacancy.Vacancy@6]. An entity copy [com.epam.hhsystem.model.vacancy.Vacancy#6] was already assigned to a different entity [com.epam.hhsystem.model.vacancy.Vacancy@6]. update на merge просто так не меняется: merge возвращает новый объект, и это надо учитывать Код: java 1. Так что лучше показать новый код. А по проблеме - советую начать по алгоритму, который будет работать наверняка, при любых метаданных (аннотациях) Код: java 1. 2. 3. Еще лучше, если это делать симметрично, с обеих сторон связи, а hibernate сам разберется, какие запросы делать в базу. Зато полная независимость от метаданных. Писанины больше, и запросов к базе больше, но работает наверняка. А вот после этого уже играться с аннотациями, глядишь - удастся сократить код на 5 строчек. По связи Candidate и Event: если речь идет о методе updateEvent, то, как видно из исходного кода, event.candidates не изменяется, поэтому в данном случае все равно, какие там аннотации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 14:23:36 |
|
||
|
как пофикстить org.hibernate.NonUniqueObjectException ?
|
|||
|---|---|---|---|
|
#18+
Petro123redwhite90, на вторую страницу пошли.... - в апреле у тебя разве не эта тема была? http://www.sql.ru/forum/1017014/hibernate-otnosheniya-mezhdu-tablicami?hl=create table a_b - чем пример тут отличается от много ко много там? там не было этой ошибки) авторupdate на merge просто так не меняется: merge возвращает новый объект, и это надо учитывать а я в дао методе так и написал Код: java 1. вместо Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 14:42:03 |
|
||
|
как пофикстить org.hibernate.NonUniqueObjectException ?
|
|||
|---|---|---|---|
|
#18+
redwhite90, merge не делает update в базу. Этот метод проверяет кеш (сессию), и если записи нет в кеше, то он делает select, и никакого update. Если связь транзитивная, то делается select c join-нами до "противоположного" конца связи. Кроме того, повторяю: Код: java 1. , при этом mergedEvent != event, после мержа старый экземпляр event нужно отправлять в мусор, а работать с mergedEvent ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 15:03:42 |
|
||
|
как пофикстить org.hibernate.NonUniqueObjectException ?
|
|||
|---|---|---|---|
|
#18+
redwhite90там не было этой ошибки) угу. Скажи ещё датой отличается)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 15:11:55 |
|
||
|
как пофикстить org.hibernate.NonUniqueObjectException ?
|
|||
|---|---|---|---|
|
#18+
ivanraredwhite90, merge не делает update в базу. Этот метод проверяет кеш (сессию), и если записи нет в кеше, то он делает select, и никакого update. Если связь транзитивная, то делается select c join-нами до "противоположного" конца связи. Кроме того, повторяю: Код: java 1. , при этом mergedEvent != event, после мержа старый экземпляр event нужно отправлять в мусор, а работать с mergedEvent согласен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 15:22:14 |
|
||
|
как пофикстить org.hibernate.NonUniqueObjectException ?
|
|||
|---|---|---|---|
|
#18+
в общем вопрос в том, почему всё начинает работать, если поменять хозяина связи Кандидат-Вакансия на Вакансию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 17:16:21 |
|
||
|
как пофикстить org.hibernate.NonUniqueObjectException ?
|
|||
|---|---|---|---|
|
#18+
redwhite90в общем вопрос в том, почему всё начинает работать, если поменять хозяина связи Кандидат-Вакансия на Вакансиюсложно ответить, не видя всего кода. 3 связи по кругу, с каскадными обновлениями - уже ситуация не для слабых духом, ведь транзитивные связи "цепляют" друг друга, в том числе могут и "закольцеваться". А тут еще особенности работы хибернейтовских коллекций много-ко-многим. Вслепую разобрать это невозможно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 21:49:28 |
|
||
|
как пофикстить org.hibernate.NonUniqueObjectException ?
|
|||
|---|---|---|---|
|
#18+
redwhite90, - 3 таблицы - Кандидаты, Вакансии, СвязкаК-В - Список вакансий - справочник. Значит каскад от Кандидатов. При удалении кандидата - очистка К-В. Т.е. один каскад Кандидаты -> К-В - добейся чтобы работало без отсоединения объектов от сессии. А потом уже с ней. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 22:27:39 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38392357&tid=2128633]: |
0ms |
get settings: |
13ms |
get forum list: |
19ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
46ms |
get topic data: |
20ms |
get forum data: |
5ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
| others: | 322ms |
| total: | 515ms |

| 0 / 0 |
