Update of /cvsroot/hibernate/Hibernate/cirrus/hibernate/loader
In directory sc8-pr-cvs1:/tmp/cvs-serv5673/hibernate/loader
Modified Files:
Loader.java
Log Message:
experimental support for scalar selects in find()
Index: Loader.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/loader/Loader.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -C2 -d -r1.28 -r1.29
*** Loader.java 20 Nov 2002 14:20:08 -0000 1.28
--- Loader.java 22 Nov 2002 07:03:07 -0000 1.29
***************
*** 25,28 ****
--- 25,29 ----
import cirrus.hibernate.impl.QueryImpl;
import cirrus.hibernate.persister.*;
+ import cirrus.hibernate.query.QueryTranslator;
import cirrus.hibernate.type.Type;
***************
*** 71,74 ****
--- 72,79 ----
}
+ protected Type[] getReturnTypes() {
+ return null;
+ }
+
/**
* Execute an SQL query and attempt to instantiate instances of the class mapped by the given
***************
*** 109,112 ****
--- 114,123 ----
//success = true;
}
+
+ String[][] names = null;
+ final Type[] returnTypes = getReturnTypes();
+ if ( returnTypes!=null ) {
+ names = QueryTranslator.generateColumnNames( returnTypes, session.getFactory() );
+ }
final List results = new ArrayList(); //new cirrus.hibernate.collections.List(this);
***************
*** 149,153 ****
if (returnProxies) row[i] = session.proxyFor( persisters[i], keys[i], row[i] );
}
! results.add( ( cols==1 ) ? row[0] : row );
if (collection) optionalCollection.readFrom( rs, getCollectionPersister() );
--- 160,181 ----
if (returnProxies) row[i] = session.proxyFor( persisters[i], keys[i], row[i] );
}
!
! if (returnTypes==null) {
!
! results.add( ( cols==1 ) ? row[0] : row );
!
! }
! else {
! int queryCols = returnTypes.length;
! if ( queryCols==1 ) {
! results.add( returnTypes[0].nullSafeGet( rs, names[0], session, null ) );
! }
! else {
! Object[] queryRow = new Object[queryCols];
! for ( int i=0; i<queryCols; i++ )
! queryRow[i] = returnTypes[i].nullSafeGet( rs, names[i], session, null );
! results.add(queryRow);
! }
! }
if (collection) optionalCollection.readFrom( rs, getCollectionPersister() );
|