2015-08-13 3 views
0

Итак, я знаю, что эти вопросы похожи на дубликат. Но это не так. У меня есть единичный тест, и я запускаю его, и я получаю эту ошибку: Существует более одной строки с данным идентификатором. Поэтому я помещаю точку прерывания, когда это происходит, а затем, когда она зависает на линии, я ее оцениваю и, конечно, получаю ошибку. Если я сразу же оцениваю это во второй раз ... ошибка уходит, и я получаю свой единственный результат, которого я ожидаю. Это похоже на то, что спящий режим как-то не синхронизирован с самим собой. Также я получаю эту ошибку только от модульного теста. У кого-нибудь был такой же опыт? Я пробовал .flush(), .clear() и всевозможные другие вещи. Когда тест не запущен, в базе данных нет записей с идентификатором, который, по его словам, является дубликатом.hibernate Более одной строки с данным идентификатором

ответ

0

Аллилуйя! Я нашел проблему. По-видимому, у меня было несколько вызовов DAO.clear() в методе setup() самого теста. Я не уверен, что они там делали. Или как в случае, если у них будет спящий режим, проблема будет отображаться. Однако, как только я удалил вызовы Hibernate .clear() из данных тестовой настройки, ошибка исчезла вместе. Я предполагаю, что не слишком много людей/проектов используют вызов Hibernate clear(), и поэтому, возможно, я нашел какую-то странную ошибку, связанную с этим. берегитесь clear() .....

0

Попробуйте проверить Entity отношения @OneToOne, один из обоих объекта будет содержать две записи, поэтому она не сможет найти или загрузку по идентификатору, как результат будет двойной записи.

Смежные вопросы