2014-12-03 16 views
7

Yalnızca JPA numaralı telefonu kullanarak numaralı ürünü bir şekilde tüm Varlık Grafikleri durumunu takip edebilir miyim?JPA Varlık Grafikteki Olayı Değiştirme [EclipseLink]

En az bir Koleksiyon ile iki veya üç sınıflı bir Hiyerarşi bulundurmayı düşünün.

JPA @Post kullanarak ... Açıklamalar Sadece veri tabanını sarılmış halde olduğu için, sadece gerçek varlığı takip edebilirim.

Hibernate'in bunu yapabileceğini biliyorum, ancak bunu yapmak için JPA'nın uygulanmasına güvenmek istemiyorum.

En azından EclipseLink ile bunu yapmanın bir yolu olsaydı oldukça mutlu olurdum. bu biraz yardımcı olur

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"); 

Hope: bu , aradığınızı ancak bu kadar sevdiği varlıklar üzerinde değişiklik algılayabilir buysa

cevap

7

emin değilim.

+0

Cevabınız için teşekkürler, ancak hayır. EclipseLink'in gerçekten de @PostUpdate/... vb yöntemlerini gerçekten iyi bir şekilde ele almasından dolayı, EclipseLink'te bunu yapmanın bir yolunu buldum. Koleksiyonlar, diğer JPA'ların ne yazık ki yapmadığı gibi, sahip oldukları varlığa gönderilir. Benim API'mda desteklemek istediğim her sağlayıcı için özel bir uygulama ile uğraşmak zorunda kalacağım. –

+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

kabul edildi Bunu EclipseLink'te yapmanın bir yolunu istediğimden beri yeterli olur. Öyle değil, ama ben kelimemin bir erkeğiyim. –