private Object hydrateValue()

in core/src/main/java/org/hibernate/ogm/persister/impl/OgmEntityPersister.java [1048:1093]


	private Object hydrateValue(
			Tuple resultset,
			SharedSessionContractImplementor session,
			Object object,
			int index,
			boolean[] propertySelectable,
			boolean allProperties,
			boolean[] laziness,
			boolean hasDeferred,
			OgmEntityPersister rootPersister,
			String[] propNames,
			String[] propSubclassNames,
			boolean sequentialSelectEmpty
			) {
		Object value;
		if ( !propertySelectable[index] ) {
			value = PropertyAccessStrategyBackRefImpl.UNKNOWN;
		}
		else if ( allProperties || !laziness[index] ) {
			//decide which ResultSet to get the property value from:
			final boolean propertyIsDeferred = hasDeferred &&
					rootPersister.isSubclassPropertyDeferred( propNames[index], propSubclassNames[index] );
			if ( propertyIsDeferred && sequentialSelectEmpty ) {
				value = null;
			}
			else {
				//FIXME We don't handle deferred property yet
				//final ResultSet propertyResultSet = propertyIsDeferred ? sequentialResultSet : rs;
				GridType[] gridTypes = gridPropertyTypes;
				final String[] cols;
				if ( propertyIsDeferred ) {
					cols = getPropertyAliases( "", index );
				}
				else {
					//TODO What to do?
					//: suffixedPropertyColumns[i];
					cols = getPropertyAliases( "", index );
				}
				value = gridTypes[index].hydrate( resultset, cols, session, object ); //null owner ok??
			}
		}
		else {
			value = LazyPropertyInitializer.UNFETCHED_PROPERTY;
		}
		return value;
	}