Как я могу заставить их ничего не сбрасывать, и обрабатывать это самостоятельно?
Как ответили в на ваш предыдущий вопрос , используйте em.setFlushMode(FlushType.COMMIT)
, есливы хотите избежать автоматической flush
до фиксации транзакции JTA (в конце метода EJB).Просто имейте в виду, что во время коммита будет flush
.
Я ожидаю, что в базу данных ничего не сбрасывается, но, как я вижу, в оболочке mysql.
Я не думаю, что фрагмент кода, который вы показываете, иллюстрирует вышеупомянутый вопрос, здесь другой вопрос.В любом случае ... прежде чем идти дальше, вот что говорится в спецификации JPA о clear()
:
/**
* Clear the persistence context, causing all managed
* entities to become detached. Changes made to entities that
* have not been flushed to the database will not be
* persisted.
*/
public void clear();
Так что clear()
заставляет все управляемые объекты становиться обособленными , а не неуправляемый .
Другими словами, хотя спецификация немного мутная в отношении вашего варианта использования, я не думаю, что вызов clear()
должен сделать сущность, переданную в persist()
в вашем фрагменте кода, новый объект снова.
Завтра я протестирую это более подробно (даже если я думаю, что этот вариант использования не имеет особого смысла) и обновлю свой ответ.