Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по JPA / 4 сообщений из 4, страница 1 из 1
27.11.2012, 21:55:06
    #38055548
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JPA
Подскажите пожалуйста.
Есть сущность Person.
Делаю тест.

Код: java
1.
2.
3.
4.
5.
6.
public void testFetchingDeletedPerson()
    {
        personService.delete(person);
        personService.findByName(personName);
    }
    



Выскакивает эксепшн

Код: java
1.
org.springframework.orm.jpa.JpaObjectRetrievalFailureException: deleted entity passed to persist



С чем это связано? Ну удалил person, и продолжаю находится внутри той же транзакции.
Теперь я по имени - просто строке - хочу достать такую же person из базы.
Но не тот же самый инстанц, который я уже удалил.

Или дело в том, что person уже помечена к удалению, и будет удалена после транзакции, а я тут в той же транзакции запрашиваю ее?

В чем тут проблема и как построить тест? Мне надо проверить, что person удалена.
...
Рейтинг: 0 / 0
27.11.2012, 22:03:14
    #38055555
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JPA
Код: java
1.
2.
3.
public void doSomethingCool(){
//
}


Почему после выполнения этого кода не все клево?
П.С. это был намек на то чтобы вы выложили код.
...
Рейтинг: 0 / 0
27.11.2012, 23:33:12
    #38055615
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JPA
Ну вопрос вот в чем - в тесте открывается сессия - я удаляю сущность из базы и тут же хочу поверить, что ее там нет - пытаюсь считать ее по name. Получается, что она еще в кэше - то есть hibernate еще не удалил ее фактически. А я прошу Hibernate считать ее же - по имени. В той же транзакции. Hibernate ругается - deleted entity passed to persist.
!То есть он ее пометил на удаление но не удалил еще? В чем тут проблема?
...
Рейтинг: 0 / 0
27.11.2012, 23:42:55
    #38055624
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по JPA
osonНу вопрос вот в чем - в тесте открывается сессия - я удаляю сущность из базы и тут же хочу поверить, что ее там нет - пытаюсь считать ее по name. Получается, что она еще в кэше - то есть hibernate еще не удалил ее фактически. А я прошу Hibernate считать ее же - по имени. В той же транзакции. Hibernate ругается - deleted entity passed to persist.
!То есть он ее пометил на удаление но не удалил еще? В чем тут проблема?
Всё верно. Нужно вызвать flush(), чтобы сбросить состояние кэша первогоуровня в базу. Желательно ещё и закомитить и проверить из другой транзакции.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по JPA / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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