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 );
}