Package org.hibernate.persister.entity

Examples of org.hibernate.persister.entity.EntityPersister


      p.getCacheAccessStrategy().evictAll();
    }
  }

  public void evict(Class persistentClass, Serializable id) throws HibernateException {
    EntityPersister p = getEntityPersister( persistentClass.getName() );
    if ( p.hasCache() ) {
      if ( log.isDebugEnabled() ) {
        log.debug( "evicting second-level cache: " + MessageHelper.infoString(p, id, this) );
      }
      CacheKey cacheKey = new CacheKey( id, p.getIdentifierType(), p.getRootEntityName(), EntityMode.POJO, this );
      p.getCacheAccessStrategy().evict( cacheKey );
    }
  }
View Full Code Here


      p.getCacheAccessStrategy().evict( cacheKey );
    }
  }

  public void evict(Class persistentClass) throws HibernateException {
    EntityPersister p = getEntityPersister( persistentClass.getName() );
    if ( p.hasCache() ) {
      if ( log.isDebugEnabled() ) {
        log.debug( "evicting second-level cache: " + p.getEntityName() );
      }
      p.getCacheAccessStrategy().evictAll();
    }
  }
View Full Code Here

        // Check the persistence context for an entry relating to this
        // entity to be merged...
        EntityEntry entry = source.getPersistenceContext().getEntry( entity );
        if ( entry == null ) {
          EntityPersister persister = source.getEntityPersister( event.getEntityName(), entity );
          Serializable id = persister.getIdentifier( entity, source.getEntityMode() );
          if ( id != null ) {
            EntityKey key = new EntityKey( id, persister, source.getEntityMode() );
            Object managedEntity = source.getPersistenceContext().getEntity( key );
            entry = source.getPersistenceContext().getEntry( managedEntity );
            if ( entry != null ) {
View Full Code Here

   
    //TODO: check that entry.getIdentifier().equals(requestedId)
   
    final Object entity = event.getEntity();
    final EventSource source = event.getSession();
    final EntityPersister persister = source.getEntityPersister( event.getEntityName(), entity );

    ( ( EventCache ) copyCache ).put( entity, entity, true  )//before cascade!
   
    cascadeOnMerge(source, persister, entity, copyCache);
    copyValues(persister, entity, entity, source, copyCache);
View Full Code Here

    log.trace("merging transient instance");
   
    final Object entity = event.getEntity();
    final EventSource source = event.getSession();

    final EntityPersister persister = source.getEntityPersister( event.getEntityName(), entity );
    final String entityName = persister.getEntityName();

    event.setResult( mergeTransientEntity( entity, entityName, event.getRequestedId(), source, copyCache ) );
  }
View Full Code Here

  protected Object mergeTransientEntity(Object entity, String entityName, Serializable requestedId, EventSource source, Map copyCache) {

    log.trace("merging transient instance");

    final EntityPersister persister = source.getEntityPersister( entityName, entity );

    final Serializable id = persister.hasIdentifierProperty() ?
        persister.getIdentifier( entity, source.getEntityMode() ) :
            null;
    if ( copyCache.containsKey( entity ) ) {
      persister.setIdentifier( copyCache.get( entity ), id, source.getEntityMode() );
    }
    else {
      ( ( EventCache ) copyCache ).put( entity, persister.instantiate( id, source.getEntityMode() ), true ); //before cascade!
      //TODO: should this be Session.instantiate(Persister, ...)?
    }
    final Object copy = copyCache.get( entity );

    // cascade first, so that all unsaved objects get their
    // copy created before we actually copy
    //cascadeOnMerge(event, persister, entity, copyCache, Cascades.CASCADE_BEFORE_MERGE);
    super.cascadeBeforeSave(source, persister, entity, copyCache);
    copyValues(persister, entity, copy, source, copyCache, ForeignKeyDirection.FOREIGN_KEY_FROM_PARENT);

    try {
      //this bit is only *really* absolutely necessary for handling
      //requestedId, but is also good if we merge multiple object
      //graphs, since it helps ensure uniqueness
      if (requestedId==null) {
        saveWithGeneratedId( copy, entityName, copyCache, source, false );
      }
      else {
        saveWithRequestedId( copy, requestedId, entityName, copyCache, source );
      }
    }
    catch (PropertyValueException ex) {
      String propertyName = ex.getPropertyName();
      Object propertyFromCopy = persister.getPropertyValue( copy, propertyName, source.getEntityMode() );
      Object propertyFromEntity = persister.getPropertyValue( entity, propertyName, source.getEntityMode() );
      Type propertyType = persister.getPropertyType( propertyName );
      EntityEntry copyEntry = source.getPersistenceContext().getEntry( copy );
      if ( propertyFromCopy == null || ! propertyType.isEntityType() ) {
        log.trace( "property '" + copyEntry.getEntityName() + "." + propertyName +
            "' is null or not an entity; " + propertyName + " =["+propertyFromCopy+"]");
        throw ex;
View Full Code Here

    log.trace("merging detached instance");
   
    final Object entity = event.getEntity();
    final EventSource source = event.getSession();

    final EntityPersister persister = source.getEntityPersister( event.getEntityName(), entity );
    final String entityName = persister.getEntityName();

    Serializable id = event.getRequestedId();
    if ( id == null ) {
      id = persister.getIdentifier( entity, source.getEntityMode() );
    }
    else {
      // check that entity id = requestedId
      Serializable entityId = persister.getIdentifier( entity, source.getEntityMode() );
      if ( !persister.getIdentifierType().isEqual( id, entityId, source.getEntityMode(), source.getFactory() ) ) {
        throw new HibernateException( "merge requested with id not matching id of passed entity" );
      }
    }
   
    String previousFetchProfile = source.getFetchProfile();
    source.setFetchProfile("merge");
    //we must clone embedded composite identifiers, or
    //we will get back the same instance that we pass in
    final Serializable clonedIdentifier = (Serializable) persister.getIdentifierType()
        .deepCopy( id, source.getEntityMode(), source.getFactory() );
    final Object result = source.get(entityName, clonedIdentifier);
    source.setFetchProfile(previousFetchProfile);
   
    if ( result == null ) {
View Full Code Here

    }
    return customReturns;
  }

  private SQLLoadable getSQLLoadable(String entityName) throws MappingException {
    EntityPersister persister = factory.getEntityPersister( entityName );
    if ( !(persister instanceof SQLLoadable) ) {
      throw new MappingException( "class persister is not SQLLoadable: " + entityName );
    }
    return (SQLLoadable) persister;
  }
View Full Code Here

    //TODO: if object was an uninitialized proxy, this is inefficient,
    //      resulting in two SQL selects
   
    EntityEntry entry = source.getPersistenceContext().getEntry(entity);
    if (entry==null) {
      final EntityPersister persister = source.getEntityPersister( event.getEntityName(), entity );
      final Serializable id = persister.getIdentifier( entity, source.getEntityMode() );
      if ( !ForeignKeys.isNotTransient( event.getEntityName(), entity, Boolean.FALSE, source ) ) {
        throw new TransientObjectException(
            "cannot lock an unsaved transient instance: " +
            persister.getEntityName()
        );
      }

      entry = reassociate(event, entity, id, persister);
     
View Full Code Here

   * @param li The proxy initializer.
   * @param proxy The proxy to reassociate.
   */
  private void reassociateProxy(LazyInitializer li, HibernateProxy proxy) {
    if ( li.getSession() != this.getSession() ) {
      EntityPersister persister = session.getFactory().getEntityPersister( li.getEntityName() );
      EntityKey key = new EntityKey( li.getIdentifier(), persister, session.getEntityMode() );
        // any earlier proxy takes precedence
      if ( !proxiesByKey.containsKey( key ) ) {
        proxiesByKey.put( key, proxy );
      }
View Full Code Here

TOP

Related Classes of org.hibernate.persister.entity.EntityPersister

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.