Package org.hibernate.persister.entity

Examples of org.hibernate.persister.entity.EntityPersister


    return insert(null, entity);
  }

  public Serializable insert(String entityName, Object entity) {
    errorIfClosed();
    EntityPersister persister = getEntityPersister(entityName, entity);
    Serializable id = persister.getIdentifierGenerator().generate(this, entity);
    Object[] state = persister.getPropertyValues(entity, EntityMode.POJO);
    if ( persister.isVersioned() ) {
      boolean substitute = Versioning.seedVersion(state, persister.getVersionProperty(), persister.getVersionType(), this);
      if ( substitute ) {
        persister.setPropertyValues( entity, state, EntityMode.POJO );
      }
    }
    if ( id == IdentifierGeneratorFactory.POST_INSERT_INDICATOR ) {
      id = persister.insert(state, entity, this);
    }
    else {
      persister.insert(id, state, entity, this);
    }
    persister.setIdentifier(entity, id, EntityMode.POJO);
    return id;
  }
View Full Code Here


    delete(null, entity);
  }

  public void delete(String entityName, Object entity) {
    errorIfClosed();
    EntityPersister persister = getEntityPersister(entityName, entity);
    Serializable id = persister.getIdentifier(entity, EntityMode.POJO);
    Object version = persister.getVersion(entity, EntityMode.POJO);
    persister.delete(id, version, entity, this);
  }
View Full Code Here

    update(null, entity);
  }

  public void update(String entityName, Object entity) {
    errorIfClosed();
    EntityPersister persister = getEntityPersister(entityName, entity);
    Serializable id = persister.getIdentifier(entity, EntityMode.POJO);
    Object[] state = persister.getPropertyValues(entity, EntityMode.POJO);
    Object oldVersion;
    if ( persister.isVersioned() ) {
      oldVersion = persister.getVersion(entity, EntityMode.POJO);
      Object newVersion = Versioning.increment( oldVersion, persister.getVersionType(), this );
      Versioning.setVersion(state, newVersion, persister);
      persister.setPropertyValues(entity, state, EntityMode.POJO);
    }
    else {
      oldVersion = null;
    }
    persister.update(id, state, null, false, null, oldVersion, entity, null, this);
  }
View Full Code Here

  public void refresh(Object entity, LockMode lockMode) {
    refresh( bestGuessEntityName( entity ), entity, lockMode );
  }

  public void refresh(String entityName, Object entity, LockMode lockMode) {
    final EntityPersister persister = this.getEntityPersister( entityName, entity );
    final Serializable id = persister.getIdentifier( entity, getEntityMode() );
    if ( log.isTraceEnabled() ) {
      log.trace(
          "refreshing transient " +
          MessageHelper.infoString( persister, id, this.getFactory() )
      );
    }
    // TODO : can this ever happen???
//    EntityKey key = new EntityKey( id, persister, source.getEntityMode() );
//    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() )
//      );
//    }

    if ( persister.hasCache() ) {
      final CacheKey ck = new CacheKey(
          id,
              persister.getIdentifierType(),
              persister.getRootEntityName(),
              this.getEntityMode(),
              this.getFactory()
      );
      persister.getCacheAccessStrategy().evict( ck );
    }

    String previousFetchProfile = this.getFetchProfile();
    Object result = null;
    try {
      this.setFetchProfile( "refresh" );
      result = persister.load( id, entity, lockMode, this );
    }
    finally {
      this.setFetchProfile( previousFetchProfile );
    }
    UnresolvableObjectException.throwIfNull( result, id, persister.getEntityName() );
  }
View Full Code Here

      String entityName,
          Serializable id,
          boolean eager,
          boolean nullable) throws HibernateException {
    errorIfClosed();
    EntityPersister persister = getFactory().getEntityPersister(entityName);
    if ( !eager && persister.hasProxy() ) {
      return persister.createProxy(id, this);
    }
    Object loaded = temporaryPersistenceContext.getEntity( new EntityKey(id, persister, EntityMode.POJO) );
    //TODO: if not loaded, throw an exception
    return loaded==null ? get( entityName, id ) : loaded;
  }
View Full Code Here

  /**
   * {@inheritDoc}
   */
  public int getHashCode(Object x, EntityMode entityMode, SessionFactoryImplementor factory) {
    EntityPersister persister = factory.getEntityPersister(associatedEntityName);
    if ( !persister.canExtractIdOutOfEntity() ) {
      return super.getHashCode(x, entityMode);
    }

    final Serializable id;
    if (x instanceof HibernateProxy) {
      id = ( (HibernateProxy) x ).getHibernateLazyInitializer().getIdentifier();
    }
    else {
      id = persister.getIdentifier(x, entityMode);
    }
    return persister.getIdentifierType().getHashCode(id, entityMode, factory);
  }
View Full Code Here

    temporaryPersistenceContext.clear();
    return results;
  }

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

  /**
   * {@inheritDoc}
   */
  public boolean isEqual(Object x, Object y, EntityMode entityMode, SessionFactoryImplementor factory) {
    EntityPersister persister = factory.getEntityPersister(associatedEntityName);
    if ( !persister.canExtractIdOutOfEntity() ) {
      return super.isEqual(x, y, entityMode);
    }

    Serializable xid;
    if (x instanceof HibernateProxy) {
      xid = ( (HibernateProxy) x ).getHibernateLazyInitializer()
          .getIdentifier();
    }
    else {
      xid = persister.getIdentifier(x, entityMode);
    }

    Serializable yid;
    if (y instanceof HibernateProxy) {
      yid = ( (HibernateProxy) y ).getHibernateLazyInitializer()
          .getIdentifier();
    }
    else {
      yid = persister.getIdentifier(y, entityMode);
    }

    return persister.getIdentifierType()
        .isEqual(xid, yid, entityMode, factory);
  }
View Full Code Here

    }
    else if ( value == null ) {
      return null;
    }
    else {
      EntityPersister entityPersister = session.getFactory().getEntityPersister( getAssociatedEntityName() );
      Object propertyValue = entityPersister.getPropertyValue( value, uniqueKeyPropertyName, session.getEntityMode() );
      // We now have the value of the property-ref we reference.  However,
      // we need to dig a little deeper, as that property might also be
      // an entity type, in which case we need to resolve its identitifier
      Type type = entityPersister.getPropertyType( uniqueKeyPropertyName );
      if ( type.isEntityType() ) {
        propertyValue = ( ( EntityType ) type ).getIdentifier( propertyValue, session );
      }

      return propertyValue;
View Full Code Here

  public String toLoggableString(Object value, SessionFactoryImplementor factory) {
    if ( value == null ) {
      return "null";
    }

    EntityPersister persister = factory.getEntityPersister( associatedEntityName );
    StringBuffer result = new StringBuffer().append( associatedEntityName );

    if ( persister.hasIdentifierProperty() ) {
      final EntityMode entityMode = persister.guessEntityMode( value );
      final Serializable id;
      if ( entityMode == null ) {
        if ( isEmbeddedInXML ) {
          throw new ClassCastException( value.getClass().getName() );
        }
        id = ( Serializable ) value;
      }
      else {
        id = getIdentifier( value, persister, entityMode );
      }

      result.append( '#' )
        .append( persister.getIdentifierType().toLoggableString( id, factory ) );
    }

    return result.toString();
  }
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.