From: <one...@us...> - 2002-11-22 07:03:10
|
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() ); |