private Object[] postUpdateDBState(PostUpdateEvent event) { final Object[] newDbState = event.getState().clone(); if ( event.getOldState() != null ) { final EntityPersister entityPersister = event.getPersister(); for ( int i = 0; i < entityPersister.getPropertyNames().length; ++i ) { if ( !entityPersister.getPropertyUpdateability()[i] ) { // Assuming that PostUpdateEvent#getOldState() returns database state of the record before modification. // Otherwise, we would have to execute SQL query to be sure of @Column(updatable = false) column value. newDbState[i] = event.getOldState()[i]; } } } return newDbState; }
@Override public void onPostUpdate(PostUpdateEvent event) { TopiaPersistenceContext context = getContext(event); if (context != null && event.getEntity() instanceof TopiaEntity) { TopiaEntity entity = (TopiaEntity) event.getEntity(); context.getTopiaFiresSupport().fireOnPostUpdate(context, entity, event.getState()); } }
private Object[] postUpdateDBState(PostUpdateEvent event) { final Object[] newDbState = event.getState().clone(); if ( event.getOldState() != null ) { final EntityTypeDescriptor<?> entityDescriptor = event.getDescriptor(); entityDescriptor.visitStateArrayContributors( contributor -> { int index = contributor.getStateArrayPosition(); if ( !contributor.isUpdatable() ) { // Assuming that PostUpdateEvent#getOldState() returns database state of the record before // modification. Otherwise, we would have to execute SQL query to be sure of // @Column(updatable = false) column value. newDbState[ index ] = event.getOldState()[ index ]; } } ); } return newDbState; }
public void onPostUpdate(PostUpdateEvent event) { if (DataPublishListener.handleExclude(event.getEntity())) return; 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()); } }