private Object getRowFromResultSet()

in core/src/main/java/org/hibernate/ogm/loader/impl/OgmLoader.java [477:524]


	private Object getRowFromResultSet(
			ResultSet resultset,
			SharedSessionContractImplementor session,
			QueryParameters qp,
			OgmLoadingContext ogmLoadingContext,
			Serializable optionalId,
			List<Object> hydratedObjects,
			org.hibernate.engine.spi.EntityKey[] keys,
			boolean returnProxies)
	throws SQLException {
		final OgmEntityPersister[] persisters = getEntityPersisters();
		final int entitySpan = persisters.length;
		Tuple tuple = resultset.unwrap( TupleAsMapResultSet.class ).getTuple();
		extractKeysFromResultSet( session, optionalId, tuple, keys );

		registerNonExists( keys, persisters, session );

		final Object[] row = getRow(
				tuple,
				persisters,
				keys,
				qp.getOptionalObject(),
				getOptionalObjectKey( qp, session ),
				getLockModes( qp.getLockOptions() ),
				hydratedObjects,
				session
		);

		readCollectionElements( row, resultset, session );

		if ( returnProxies ) {
			// now get an existing proxy for each row element (if there is one)
			for ( int i = 0; i < entitySpan; i++ ) {
				Object entity = row[i];
				Object proxy = session.getPersistenceContext().proxyFor( persisters[i], keys[i], entity );
				if ( entity != proxy ) {
					// force the proxy to resolve itself
					( (HibernateProxy) proxy ).getHibernateLazyInitializer().setImplementation( entity );
					row[i] = proxy;
				}
			}
		}

		//applyPostLoadLocks
		//nothing to do atm it seems, the code in Hibernate Core does not do anything either

		return getResultColumnOrRow( row );
	}