Я работаю с OpenJPA 2.2.1, и хотел бы сделать следующее:Howto сравнить два объекта в JPA onPreUpdate
1) Загрузите объект 2) Изменить объект 3) Проверьте изменения, сделанные перед сохранением сущность
Что я сделал:
1) Загрузите объект через
EntityManager.find(MyObject.class, id);
2) Хорошо, довольно ясно, я-я чернила, что-то вроде
MyObject obj = EntityManager.find(MyObject.class, id);
obj.setName("New name");
3) пыталось выселить объект из PersistenceContext и загрузить его снова из базы данных с помощью:
EntityManager.evict(MyObject.class, id);
EntityManager.find(MyObject.class, id);
Объекта, возвращаемый вызова находки() в 3) всегда равный (равный ID) субъекту, найденному в 1)
Я думал, что могу удалить объект из PersistenceContext/cache путем выселения.
Как я могу добиться, чтобы иметь два различных сущностей: а) измененное лицо и б) оригинал объект из базы данных, загруженная в шаге 3)
А: Если я обновить() предприятие я ожидаю метод find, чтобы вернуть обновленный. Это верно?
Я тоже попробовал @PreUpdate слушатель с тем же результатом, так что я думаю, что должна быть что-то я не понял, о JPA PersistenceContext или Java ссылки ...
Я надеюсь, что я предоставил достаточно информацию! Заранее спасибо!
С «равным идентификатором» вы имеете в виду, что оба экземпляра «MyObject» имеют одинаковое значение «id»? Потому что это именно то, что вы попросили entityManager для ... – mabi