@Override public EntityAccess createEntityAccess(PersistentEntity entity, Object instance) { return getMappingContext().createEntityAccess(entity, instance); }
protected AbstractPersistenceEvent(final Datastore source, final Object entity) { super(source); MappingContext mappingContext = source.getMappingContext(); entityObject = mappingContext.getProxyHandler().unwrap(entity); this.entity = mappingContext.getPersistentEntity(entityObject.getClass().getName()); if(this.entity != null) { this.entityAccess = mappingContext.createEntityAccess(this.entity, entityObject); } else { this.entityAccess = null; } }
public boolean onPreInsert(PreInsertEvent hibernateEvent) { Object entity = hibernateEvent.getEntity(); Class type = Hibernate.getClass(entity); PersistentEntity persistentEntity = mappingContext.getPersistentEntity(type.getName()); AbstractPersistenceEvent grailsEvent; ModificationTrackingEntityAccess entityAccess = null; if(persistentEntity != null) { entityAccess = new ModificationTrackingEntityAccess(mappingContext.createEntityAccess(persistentEntity, entity)); grailsEvent = new org.grails.datastore.mapping.engine.event.PreInsertEvent(this.datastore, persistentEntity, entityAccess); } else { grailsEvent = new org.grails.datastore.mapping.engine.event.PreInsertEvent(this.datastore, entity); } publishEvent(hibernateEvent, grailsEvent); boolean cancelled = grailsEvent.isCancelled(); if(!cancelled && entityAccess != null) { synchronizeHibernateState(hibernateEvent, entityAccess); } return cancelled; }
public boolean onPreUpdate(PreUpdateEvent hibernateEvent) { Object entity = hibernateEvent.getEntity(); Class type = Hibernate.getClass(entity); MappingContext mappingContext = datastore.getMappingContext(); PersistentEntity persistentEntity = mappingContext.getPersistentEntity(type.getName()); AbstractPersistenceEvent grailsEvent; ModificationTrackingEntityAccess entityAccess = null; if(persistentEntity != null) { entityAccess = new ModificationTrackingEntityAccess(mappingContext.createEntityAccess(persistentEntity, entity)); grailsEvent = new org.grails.datastore.mapping.engine.event.PreUpdateEvent(this.datastore, persistentEntity, entityAccess); } else { grailsEvent = new org.grails.datastore.mapping.engine.event.PreUpdateEvent(this.datastore, entity); } publishEvent(hibernateEvent, grailsEvent); boolean cancelled = grailsEvent.isCancelled(); if(!cancelled && entityAccess != null) { synchronizeHibernateState(hibernateEvent, entityAccess); } return cancelled; }