Example usage for org.hibernate.event.spi PostUpdateEvent getDirtyProperties

List of usage examples for org.hibernate.event.spi PostUpdateEvent getDirtyProperties

Introduction

In this page you can find the example usage for org.hibernate.event.spi PostUpdateEvent getDirtyProperties.

Prototype

public int[] getDirtyProperties() 

Source Link

Usage

From source file:org.granite.tide.hibernate4.HibernateDataChangePublishListener.java

License:Open Source License

public void onPostUpdate(PostUpdateEvent event) {
    if (DataPublishListener.handleExclude(event.getEntity()))
        return;//  w  ww. ja v  a  2  s  .  c  o m

    if (event.getDirtyProperties() != null && event.getDirtyProperties().length > 0) {
        Object change = getChange(event.getPersister(), event.getSession(),
                event.getPersister().getEntityName(), event.getId(), event.getEntity());
        if (change instanceof Change) {
            for (int i = 0; i < event.getDirtyProperties().length; i++) {
                int pidx = event.getDirtyProperties()[i];
                String pname = event.getPersister().getPropertyNames()[pidx];
                if (AnnotationUtils.isAnnotatedWith(event.getEntity(), pname, ExcludeFromDataPublish.class))
                    continue;

                ((Change) change).getChanges().put(pname, event.getState()[pidx]);
            }
        } else if (change == null)
            DataContext.addUpdate(EntityUpdateType.UPDATE, event.getEntity(), event.getEntity());
    }
}