2014-01-31 4 views
0

У меня есть два объекта Question и Publication. В публикации есть список вопросов. Когда я сохраняю вопрос, все в порядке, я проверяю свою базу данных, и строка вложена (я использую MySQL).Java/JPA сохраняют возвращаемое значение

Затем мне нужно показать вопрос об этой публикации, и когда я выбираю вопросы, которые я упорствовал до этого, это не шоу.

Я делаю «Select p from Publicacion», который возвращает публикации со всеми вопросами, а не новыми. Если я остановлю разорвать и снова развернуть веб-приложение, то, когда я покажу вопрос о публикации, он появится!

Я не знаю, что происходит, я не знаю, что-то связано с памятью или что-то вроде менеджера сущностей.

пожалуйста им застрял

благодаря

+0

Пробовали ли вы вровень на менеджера объекта? – Gayathri

+0

После сохранения, очистить http://docs.oracle.com/javaee/5/api/javax/persistence/EntityManager.html#flush() или обновить http://docs.oracle.com/javaee/5/api/ javax/persistence/EntityManager.html # refresh (java.lang.Object) – StarsSky

+0

Я делаю em.flush(), но ничего не происходит. Я делаю выбор q из вопроса, и он возвращает вопрос, но когда я получу, если из публикации он не возвращается! – user3240604

ответ

0
public T persist(T object){ 
    entityManager.persist(object); 
    entityManager.flush(); 
    return object; 
} 
+0

Что это за код? Как он отвечает на вопрос? Измените свой ответ, чтобы объяснить. – Charles

+0

Вы можете использовать этот код для сохранения объекта. Причина, по которой ваш недавно сохраненный объект не отображается в вашей базе данных, заключается в том, что транзакция еще не очищена. Использовать ящик сущностей для очистки транзакции позволит вашему созданному объекту Neely показать в dadabase – weiyueli

0

Я думаю, что вровень отсутствует операция, и, вероятно, не хватает фиксации в активной транзакции, это звучит, когда вы остановите сервер все активные транзакции являются и вы можете увидеть изменения после завершения работы.

У вас не было никакого кода. Я предполагаю, что вы используете JPA, поэтому попробуйте очистить entitymanager. Если вы используете приложения, управляемые операции

em.getTransaction().begin(); 
Changes the object are doing here. 
em.persist(Object); 
em.getTransaction().commit(); 

Если вы используете контейнер удалось сделку проверить демаркацию транзакций, чтобы убедиться, что вы будете упорствовать объект, прежде чем попытаться получить его

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