下面列出了怎么用org.hibernate.event.spi.PostUpdateEvent的API类实例代码及写法,或者点击链接到github查看源代码。
private void postUpdate() {
final EventListenerGroup<PostUpdateEventListener> listenerGroup = listenerGroup( EventType.POST_UPDATE );
if ( listenerGroup.isEmpty() ) {
return;
}
final PostUpdateEvent event = new PostUpdateEvent(
getInstance(),
getId(),
state,
previousState,
dirtyFields,
getPersister(),
eventSource()
);
for ( PostUpdateEventListener listener : listenerGroup.listeners() ) {
listener.onPostUpdate( event );
}
}
@Override
public void onPostUpdate(PostUpdateEvent event) {
Repository repository = null;
Object entity = event.getEntity();
if (entity instanceof RepositoryLocale) {
RepositoryLocale repositoryLocale = (RepositoryLocale) entity;
repository = repositoryLocale.getRepository();
logger.debug("Repository statistics is outdated because locale is updated");
} else if (entity instanceof Asset) {
Asset asset = (Asset) entity;
repository = asset.getRepository();
logger.debug("Repository statistics is outdated because asset is updated");
}
setRepositoryStatistisOutOfDate(repository);
}
private void postCommitUpdate(boolean success) {
final EventListenerGroup<PostUpdateEventListener> listenerGroup = listenerGroup( EventType.POST_COMMIT_UPDATE );
if ( listenerGroup.isEmpty() ) {
return;
}
final PostUpdateEvent event = new PostUpdateEvent(
getInstance(),
getId(),
state,
previousState,
dirtyFields,
getPersister(),
eventSource()
);
for ( PostUpdateEventListener listener : listenerGroup.listeners() ) {
if ( PostCommitUpdateEventListener.class.isInstance( listener ) ) {
if ( success ) {
listener.onPostUpdate( event );
}
else {
((PostCommitUpdateEventListener) listener).onPostUpdateCommitFailed( event );
}
}
else {
//default to the legacy implementation that always fires the event
listener.onPostUpdate( event );
}
}
}
@Override
public void onPostUpdate( PostUpdateEvent postUpdateEvent )
{
Object entity = postUpdateEvent.getEntity();
getAuditable( entity, "update" ).ifPresent( auditable ->
auditManager.send( Audit.builder()
.auditType( getAuditType() )
.auditScope( auditable.scope() )
.createdAt( LocalDateTime.now() )
.createdBy( getCreatedBy() )
.object( entity )
.auditableEntity( new AuditableEntity( entity ) )
.build() ) );
}
@Override
public void onPostUpdate(PostUpdateEvent event) {
evictCache( event.getEntity(), event.getPersister(), event.getSession(), event.getOldState() );
}
@Override
public void onPostUpdate(PostUpdateEvent event) {
Object entity = event.getEntity();
EventSource eventSource = event.getSession();
handlePostUpdate(entity, eventSource);
}
@Override
public void onPostUpdateCommitFailed(PostUpdateEvent pue) {
}
public void onPostUpdate(PostUpdateEvent hibernateEvent) {
Object entity = hibernateEvent.getEntity();
activateDirtyChecking(entity);
publishEvent(hibernateEvent, new org.grails.datastore.mapping.engine.event.PostUpdateEvent(
this.datastore, entity));
}
@Override
public void onPostUpdateCommitFailed( PostUpdateEvent event )
{
log.warn( "onPostUpdateCommitFailed: " + event );
}