Hi All
I am try to listen for events when an Entity is persisted, updated and
removed. This is simply so that I can update the model which handles the UI.
I have successfully added @EntityListeners(EntryListener.class) anotation to
the entity class. My EntryListener class looks like the following.
public class EntryListener implements EntityListener{
private PropertyChangeSupport pss = new PropertyChangeSupport(this);
private EntityNotification en =
Lookup.getDefault().lookup(EntityNotification.class);
/**
* Blank no arg constructor
*/
public EntryListener() {
}
@PostPersist
@Override
public void postPersist(Object obj) {
en.postPersist(obj);
}
@Override
public void prePersist(Object obj) {
Logger.getLogger(EntryListener.class.getName()).log(Level.INFO,
"prePersist fired");
}
@Override
public void preUpdate(Object obj) {
Logger.getLogger(EntryListener.class.getName()).log(Level.INFO,
"preUpdate fired");
}
@Override
public void postUpdate(Object obj) {
Logger.getLogger(EntryListener.class.getName()).log(Level.INFO,
"postUpdate fired");
en.postUpdate(obj);
}
@Override
public void postRemove(Object Obj) {
Logger.getLogger(EntryListener.class.getName()).log(Level.INFO,
"postRemove fired");
}
@Override
public void preRemove(Object obj) {
Logger.getLogger(EntryListener.class.getName()).log(Level.INFO,
"preRemove fired");
}
@Override
public void addPropertyChangeListener(PropertyChangeListener pcl) {
pss.addPropertyChangeListener(pcl);
}
@Override
public void removePropertyChangeListener(PropertyChangeListener pcl) {
pss.removePropertyChangeListener(pcl);
}
}
The problem is that I seem to be able to catch the event for @postPersist
when a new item is added to the database. I am not closing the EntityManager
each time as a lot of transactions can occur. But am getting the data
straight from the db when updated and then passed to the UI. This works well
for when I add an entry with em.persist. But If I update an item in the UI
and try to either persist the updated item or merge the item no event is
being thrown.
Any advice is much appreciated.
Thanks
David