2014-12-03 2 views
7

Могу ли я использовать только JPA, так или иначе отслеживать состояние Entity-Graphs?JPA Изменить событие на графике сущности [EclipseLink]

Рассмотрите наличие иерархии с двумя или тремя классами в них с хотя бы одной коллекцией.

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

Я знаю, что Hibernate может это сделать, но я не хочу полагаться на реализацию JPA для этого.

Я был бы очень рад, если бы был способ сделать это с EclipseLink по крайней мере.

ответ

7

Не уверены, если это то, что вы ищете, но вы можете обнаружить изменение ваших сущностей, как так:

Account a = em.merge(account); 
final JpaEntityManager jpaEntityManager = (JpaEntityManager) em.getDelegate(); 
final UnitOfWorkChangeSet changeSet = jpaEntityManager.getUnitOfWork().getCurrentChanges(); 
final ObjectChangeSet accountChangeSet = changeSet.getObjectChangeSetForClone(a); 
final ObjectChangeSet userChangeSet = changeSet.getObjectChangeSetForClone(a.getUser()); 
em.clear(); 
//checks only for these 2 specific fields; changeSet.hasChanges() would check for all changes 
return accountChangeSet.hasChangeFor("credits") || userChangeSet.hasChangeFor("name"); 

Надеется, что это помогает немного.

+0

спасибо за ответ, но нет. Я уже выяснил, как это сделать в EclipseLink, поскольку EclipseLink отлично справляется с методами @PostUpdate/... и т. Д. (Обновления для Коллекций отправляются собственному объекту и т. Д.), Которых, к сожалению, нет у других JPA. Я думаю, что мне придется придерживаться специальной реализации для каждого провайдера, которого я хочу поддерживать в своем API. –

+0

https://github.com/Hotware/Hibernate-Search-JPA/blob/master/hibernate-search-jpa/src/main/java/com/github/hotware/hsearch/jpa/event/HSearchJPAEventListener.java –

+0

принят это, поскольку я попросил сделать это в EclipseLink, хватит. Это не похоже, но я - человек моего слова. –

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