2014-09-16 3 views
0

Мы используем Hibernate 4 и Spring 4 и создали простой DAO для управления объектом Task, который имеет поле ENUM.Сохраняемый объект отсутствует значение enum

В нашем первом модульном тесте создан Акк Аккер, который затем создает экземпляр нового объекта Task, устанавливает его поле перечисления и сохраняет объект Task через DAO. Как только актер сделал это, мы вернемся к единичному тестовому потоку, и мы используем DAO для получения объекта Task, который он находит, но поле перечисления равно null. Если я проверю базу данных, столбец перечисления определенно имеет значение.

В нашем втором модульном тесте мы удаляем Акка Аккера из уравнения. Создайте экземпляр задачи, установите поле перечисления и сохраняйте все в модульном тесте. На этот раз, когда мы используем DAO для выполнения поиска, все есть, поле enum включено.

Итак, почему в первом модульном тесте мы не можем получить сохраненную задачу с правильным значением перечисления? Область DAO не установлена, поэтому один и тот же экземпляр DAO должен использоваться как в Актере, так и внутри модульного теста.

Заранее спасибо.

С уважением,

+0

Может быть много вещей: спящий сеанс кеша, кеш второго уровня .. можете ли вы разместить какой-то код? –

+0

Спасибо, Симона, в конце концов, это была наша глупая ошибка. – user3784318

ответ

0

Обнаружили проблему, это было нашим плохим. Когда Hibernate устанавливает объект со значением enum, он вызывает нашу реализацию UserType, в этот момент мы настроили его неправильно. Наш код поймал ошибку, но ничего не сделал с ней, даже оператор журнала.

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