У меня есть простой объект, состоящий из одного отношения «один ко многим» и одного отношения «многие ко многим».
У меня есть тестовый сценарий для добавления 2 контактов и 2 ролей к объекту клиента, а затем поиска клиента. получить контакты из него удалить один из контактов и сохранить клиента.
Я думаю, что это должен быть простой тест, и он должен работать. При сохранении клиента я получаю сообщение об ошибке, связанной с повторяющейся записью для таблицы customer_role, которая является промежуточной таблицей, связанной с отношением «многие ко многим» между клиентом и ролью.
Мой вопрос заключается в том, почему jpa даже пытается вставить новый запись для уже существующих записей для отношения "многие ко многим".
Hibernate: выберите next_val в качестве id_val из hibernate_sequence для обновления
Hibernate: обновите hibernate_sequence set next_val =? где next_val =?
Hibernate: выберите next_val в качестве id_val из hibernate_sequence для обновления
Hibernate: обновите hibernate_sequence set next_val =? где next_val =?
Hibernate: выберите next_val в качестве id_val из hibernate_sequence для обновления
Hibernate: обновите hibernate_sequence set next_val =? где next_val =?
Hibernate: выберите next_val в качестве id_val из hibernate_sequence для обновления
Hibernate: обновите hibernate_sequence set next_val =? где next_val =?
Hibernate: выберите next_val в качестве id_val из hibernate_sequence для обновления
Hibernate: обновите hibernate_sequence set next_val =? где next_val =?
Hibernate: вставить в клиент (имя, фамилия, id) значения (?,?,?)
Hibernate: вставить в контакт (contact_type, cust_id, number, id) значения (?,?,?,?)
Hibernate: вставить в контакт (contact_type, cust_id, number, id) значения (?,?,?,?)
Hibernate: вставить в значения ролей (код, имя, идентификатор) (?,?,?)
Hibernate: вставка значений роли (код, имя, идентификатор) (?,?,?)
Hibernate: вставить в значения customer_role (role_id, cust_id) (?,?)
Hibernate: вставить в значения customer_role (role_id, cust_id) (?,?)
Hibernate: выбрать customer0_.id в качестве id1_1_ , customer0_.first_name как first_na2_1_, customer0_.last_name как last_nam3_1_ от клиента customer0_, где customer0_.first_name =?
2020-03-22 23: 04: 16.160 INFO 40143 --- [main] aojkrCustomerRepositoryTest: контакты: [ Контакт (id = 2, номер = 2348756234, contactType = PHONE), Контакт (id = 3, номер = 040404040, contactType = M OBILE)]
2020-03-22 23: 04: 16.160 INFO 40143 --- [main] aojkrCustomerRepositoryTest: role: [Role (id = 4, name = General User, code = USER), Role ( id = 5, name = Administration, код = ADMIN)]
Hibernate: вставить в значения customer_role (role_id, cust_id) (?,?)
2020-03-22 23:04: 16.183 WARN 40143 --- [main] ohengine.jdb c .spi.SqlExceptionHelper: SQL Ошибка: 1062, SQLState: 23000
2020-03-22 23: 04: 16.184 ОШИБКА 40143 - - [main] ohengine.jdb c .spi.SqlExceptionHelper: повторяющаяся запись '4-1' для ключа 'PRIMARY'
2020-03-22 23: 04: 16.185 INFO 40143 --- [main ] ohejbinternal.AbstractBatchImpl: HHH000010: при выпуске пакета он все еще содержал операторы JDB C
2020-03-22 23: 04: 16.202 WARN 40143 --- [main] ostest.context.TestContextManager: Caught исключение при вызове обратного вызова afterTestMethod для TestExecutionListener
Если вы заметите в конце этого журнала, jpa попытается вставить новую запись и завершится неудачей. * 10 62 *