docs: @Override
  	public Object[] getDatabaseSnapshot(Serializable id, SharedSessionContractImplementor session)
  			throws HibernateException {
  
  		if ( log.isTraceEnabled() ) {
  			log.trace( "Getting current persistent state for: " + MessageHelper.infoString( this, id, getFactory() ) );
  		}
  
  		//snapshot is a Map in the end
  		final Tuple resultset = getFreshTuple( EntityKeyBuilder.fromPersister( this, id, session ), session );
  
  		//if there is no resulting row, return null
  		if ( resultset == null || resultset.getSnapshot().isEmpty() ) {
  			return null;
  		}
  		//otherwise return the "hydrated" state (ie. associations are not resolved)
  		GridType[] types = gridPropertyTypes;
  		Object[] values = new Object[types.length];
  		boolean[] includeProperty = getPropertyUpdateability();
  		for ( int i = 0; i < types.length; i++ ) {
  			if ( includeProperty[i] ) {
  				values[i] = types[i].hydrate( resultset, getPropertyAliases( "", i ), session, null ); //null owner ok??
  			}
  		}
  		return values;
  	}