Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Странное поведение Hibernate / 3 сообщений из 3, страница 1 из 1
11.09.2013, 22:36:12
    #38394158
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Hibernate
Подскажите пожалуйста в чем может быть проблема.
Делаю запрос из DAO

Код: java
1.
SELECT v FROM Person p WHERE :address IN ELEMENTS(p.addressesList)



Используя JPA на базе Hibernate.
В результате Hibernate делает такие манипуляции

Код: java
1.
 select person0_.id as id5_, person0 ....



а потом зачем-то начинает делать insert в таблицу, которая связывает этот объект с объектом Role как ManyToMany

Код: java
1.
2.
3.
4.
5.
 Hibernate: insert into JOIN_PERSON_ROLE (PERSON_ID, ROLE_ID) values (?, ?)
DEBUG: org.hibernate.persister.collection.AbstractCollectionPersister - Done inserting collection: 3 rows inserted
DEBUG: org.hibernate.persister.collection.AbstractCollectionPersister - 
DEBUG: org.hibernate.engine.jdbc.batch.internal.BatchingBatch - Executing batch size: 9
DEBUG: org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Нарушение ссылочной целостности:



То есть пытается несколько раз вставить записи в эту таблицу и на второй раз падает, потому что они уже там есть.
Причем если тест запустить из IDE, то проходит. А если из мавена, то падает.
Зачем hibernate делает эти инсерты при селекте?
...
Рейтинг: 0 / 0
11.09.2013, 23:31:39
    #38394180
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Hibernate
Если этот тест запустить из другого теста 2 раза, то та же ситуация. Получается, что данные из БД не очищаются между тестами. Как их удалять перед каждым новым тестом?
...
Рейтинг: 0 / 0
12.09.2013, 10:59:11
    #38394400
cdtyjv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Hibernate
Ну разумеется, они не очищаются - кто же их очистит то?
Варианты такие:
1) Делаете ваши тесты внутри транзакции, которую по окончании теста откатываете. Подойдет не для всех сценариев.
2) Чистите базу данных руками в after-методе.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Странное поведение Hibernate / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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