Package org.hibernate.event.spi

Examples of org.hibernate.event.spi.EventSource


    handlePostUpdate(entity, eventSource);   
  }

  public void onPostUpdateCollection(PostCollectionUpdateEvent event) {
    Object entity = event.getCollection().getOwner();
    EventSource eventSource = event.getSession();
    handlePostUpdate(entity, eventSource);   
  }
View Full Code Here


  }

  @Override
  public void onPostUpdate(PostUpdateEvent event) {
    Object entity = event.getEntity();
    EventSource eventSource = event.getSession();
    handlePostUpdate(entity, eventSource);
  }
View Full Code Here

  }

  @Override
  public void onPostRecreateCollection(PostCollectionRecreateEvent event) {
    Object entity = event.getCollection().getOwner();
    EventSource eventSource = event.getSession();
    handlePostUpdate(entity, eventSource);
  }
View Full Code Here

  }

  @Override
  public void onPostRemoveCollection(PostCollectionRemoveEvent event) {
    Object entity = event.getCollection().getOwner();
    EventSource eventSource = event.getSession();
    handlePostUpdate(entity, eventSource);   
  }
View Full Code Here

  }

  @Override
  public void onPostUpdateCollection(PostCollectionUpdateEvent event) {
    Object entity = event.getCollection().getOwner();
    EventSource eventSource = event.getSession();
    handlePostUpdate(entity, eventSource);   
  }
View Full Code Here

    return super.invokeDeleteLifecycle( session, entity, persister );
  }

  @Override
  protected void performDetachedEntityDeletionCheck(DeleteEvent event) {
    EventSource source = event.getSession();
    String entityName = event.getEntityName();
    EntityPersister persister = source.getEntityPersister( entityName, event.getObject() );
    Serializable id =  persister.getIdentifier( event.getObject(), source );
    entityName = entityName == null ? source.guessEntityName( event.getObject() ) : entityName;
    throw new IllegalArgumentException("Removing a detached instance "+ entityName + "#" + id);
  }
View Full Code Here

    return super.invokeDeleteLifecycle( session, entity, persister );
  }

  @Override
  protected void performDetachedEntityDeletionCheck(DeleteEvent event) {
    EventSource source = event.getSession();
    String entityName = event.getEntityName();
    EntityPersister persister = source.getEntityPersister( entityName, event.getObject() );
    Serializable id =  persister.getIdentifier( event.getObject(), source );
    entityName = entityName == null ? source.guessEntityName( event.getObject() ) : entityName;
    throw new IllegalArgumentException("Removing a detached instance "+ entityName + "#" + id);
  }
View Full Code Here

    if ( !lockable.isVersioned() ) {
      throw new HibernateException( "[" + lockMode + "] not supported for non-versioned entities [" + lockable.getEntityName() + "]" );
    }
    EntityEntry entry = session.getPersistenceContext().getEntry( object );
    EntityIncrementVersionProcess incrementVersion = new EntityIncrementVersionProcess( object, entry );
    EventSource source = (EventSource) session;
    // Register the EntityIncrementVersionProcess action to run just prior to transaction commit.
    source.getActionQueue().registerProcess( incrementVersion );
  }
View Full Code Here

      int timeout, SessionImplementor session) throws StaleObjectStateException, JDBCException {
    if ( !lockable.isVersioned() ) {
      throw new OptimisticLockException( "[" + lockMode + "] not supported for non-versioned entities [" + lockable.getEntityName() + "]" );
    }
    EntityEntry entry = session.getPersistenceContext().getEntry(object);
    EventSource source = (EventSource)session;
    EntityVerifyVersionProcess verifyVersion = new EntityVerifyVersionProcess(object, entry);
    // Register the EntityVerifyVersionProcess action to run just prior to transaction commit.
    source.getActionQueue().registerProcess(verifyVersion);
  }
View Full Code Here

   *
   * @param event The refresh event to be handled.
   */
  public void onRefresh(RefreshEvent event, Map refreshedAlready) {

    final EventSource source = event.getSession();

    boolean isTransient = ! source.contains( event.getObject() );
    if ( source.getPersistenceContext().reassociateIfUninitializedProxy( event.getObject() ) ) {
      if ( isTransient ) {
        source.setReadOnly( event.getObject(), source.isDefaultReadOnly() );
      }
      return;
    }

    final Object object = source.getPersistenceContext().unproxyAndReassociate( event.getObject() );

    if ( refreshedAlready.containsKey(object) ) {
      LOG.trace( "Already refreshed" );
      return;
    }

    final EntityEntry e = source.getPersistenceContext().getEntry( object );
    final EntityPersister persister;
    final Serializable id;

    if ( e == null ) {
      persister = source.getEntityPersister(event.getEntityName(), object); //refresh() does not pass an entityName
      id = persister.getIdentifier( object, event.getSession() );
      if ( LOG.isTraceEnabled() ) {
        LOG.tracev( "Refreshing transient {0}", MessageHelper.infoString( persister, id, source.getFactory() ) );
      }
      final EntityKey key = source.generateEntityKey( id, persister );
      if ( source.getPersistenceContext().getEntry(key) != null ) {
        throw new PersistentObjectException(
            "attempted to refresh transient instance when persistent instance was already associated with the Session: " +
            MessageHelper.infoString(persister, id, source.getFactory() )
          );
      }
    }
    else {
      if ( LOG.isTraceEnabled() ) {
        LOG.tracev( "Refreshing ", MessageHelper.infoString( e.getPersister(), e.getId(), source.getFactory() ) );
      }
      if ( !e.isExistsInDatabase() ) {
        throw new HibernateException( "this instance does not yet exist as a row in the database" );
      }

      persister = e.getPersister();
      id = e.getId();
    }

    // cascade the refresh prior to refreshing this entity
    refreshedAlready.put(object, object);
    new Cascade( CascadingAction.REFRESH, Cascade.BEFORE_REFRESH, source)
        .cascade( persister, object, refreshedAlready );

    if ( e != null ) {
      final EntityKey key = source.generateEntityKey( id, persister );
      source.getPersistenceContext().removeEntity(key);
      if ( persister.hasCollections() ) new EvictVisitor( source ).process(object, persister);
    }

    if ( persister.hasCache() ) {
      final CacheKey ck = source.generateCacheKey(
          id,
          persister.getIdentifierType(),
          persister.getRootEntityName()
      );
      persister.getCacheAccessStrategy().evict( ck );
    }

    evictCachedCollections( persister, id, source.getFactory() );

    String previousFetchProfile = source.getLoadQueryInfluencers().getInternalFetchProfile();
    source.getLoadQueryInfluencers().setInternalFetchProfile( "refresh" );
    Object result = persister.load( id, object, event.getLockOptions(), source );
    // Keep the same read-only/modifiable setting for the entity that it had before refreshing;
    // If it was transient, then set it to the default for the source.
    if ( result != null ) {
      if ( ! persister.isMutable() ) {
        // this is probably redundant; it should already be read-only
        source.setReadOnly( result, true );
      }
      else {
        source.setReadOnly( result, ( e == null ? source.isDefaultReadOnly() : e.isReadOnly() ) );
      }
    }
    source.getLoadQueryInfluencers().setInternalFetchProfile(previousFetchProfile);

    UnresolvableObjectException.throwIfNull( result, id, persister.getEntityName() );

  }
View Full Code Here

TOP

Related Classes of org.hibernate.event.spi.EventSource

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.