diff --git a/core/src/main/java/org/hibernate/action/EntityUpdateAction.java b/core/src/main/java/org/hibernate/action/EntityUpdateAction.java index 1fc1617e2b..b4de6b09b4 100644 --- a/core/src/main/java/org/hibernate/action/EntityUpdateAction.java +++ b/core/src/main/java/org/hibernate/action/EntityUpdateAction.java @@ -190,7 +190,8 @@ private void postUpdate() { getInstance(), getId(), state, - previousState, + previousState, + dirtyFields, getPersister(), (EventSource) getSession() ); @@ -208,7 +209,8 @@ private void postCommitUpdate() { getInstance(), getId(), state, - previousState, + previousState, + dirtyFields, getPersister(), (EventSource) getSession() ); diff --git a/core/src/main/java/org/hibernate/event/PostUpdateEvent.java b/core/src/main/java/org/hibernate/event/PostUpdateEvent.java index f43761e15b..64bd3451ba 100755 --- a/core/src/main/java/org/hibernate/event/PostUpdateEvent.java +++ b/core/src/main/java/org/hibernate/event/PostUpdateEvent.java @@ -39,12 +39,15 @@ public class PostUpdateEvent extends AbstractEvent { private Object[] state; private Object[] oldState; private Serializable id; + //list of dirty properties as computed by Hibernate during a FlushEntityEvent + private final int[] dirtyProperties; public PostUpdateEvent( Object entity, Serializable id, Object[] state, Object[] oldState, + int[] dirtyProperties, EntityPersister persister, EventSource source ) { @@ -53,6 +56,7 @@ public PostUpdateEvent( this.id = id; this.state = state; this.oldState = oldState; + this.dirtyProperties = dirtyProperties; this.persister = persister; } @@ -71,4 +75,8 @@ public EntityPersister getPersister() { public Object[] getState() { return state; } + + public int[] getDirtyProperties() { + return dirtyProperties; + } }