From: <one...@us...> - 2003-03-02 09:02:43
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl In directory sc8-pr-cvs1:/tmp/cvs-serv12255/hibernate/impl Modified Files: QueryImpl.java Log Message: fixed some bugs with setParameterList() Index: QueryImpl.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl/QueryImpl.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** QueryImpl.java 20 Jan 2003 12:48:11 -0000 1.7 --- QueryImpl.java 2 Mar 2003 09:02:39 -0000 1.8 *************** *** 37,41 **** private ArrayList values = new ArrayList(4); private ArrayList types = new ArrayList(4); ! private Map namedParams = new HashMap(4); public QueryImpl(String queryString, SessionImplementor session) { --- 37,42 ---- private ArrayList values = new ArrayList(4); private ArrayList types = new ArrayList(4); ! private Map namedParameters = new HashMap(4); ! private Map namedParameterLists = new HashMap(4); public QueryImpl(String queryString, SessionImplementor session) { *************** *** 48,60 **** public Iterator iterate() throws HibernateException { ! return session.iterate(queryString, values.toArray(), (Type[]) types.toArray(NO_TYPES), selection, namedParams); } public ScrollableResults scroll() throws HibernateException { ! return session.scroll(queryString, values.toArray(), (Type[]) types.toArray(NO_TYPES), selection, namedParams); } public List list() throws HibernateException { ! return session.find(queryString, values.toArray(), (Type[]) types.toArray(NO_TYPES), selection, namedParams); } --- 49,70 ---- public Iterator iterate() throws HibernateException { ! Map namedParams = new HashMap(); ! namedParams.putAll(namedParameters); ! String query = bindParameterLists(namedParams); ! return session.iterate(query, values.toArray(), (Type[]) types.toArray(NO_TYPES), selection, namedParams); } public ScrollableResults scroll() throws HibernateException { ! Map namedParams = new HashMap(); ! namedParams.putAll(namedParameters); ! String query = bindParameterLists(namedParams); ! return session.scroll(query, values.toArray(), (Type[]) types.toArray(NO_TYPES), selection, namedParams); } public List list() throws HibernateException { ! Map namedParams = new HashMap(); ! namedParams.putAll(namedParameters); ! String query = bindParameterLists(namedParams); ! return session.find(query, values.toArray(), (Type[]) types.toArray(NO_TYPES), selection, namedParams); } *************** *** 220,224 **** public void setParameter(String name, Object val, Type type) { ! namedParams.put(name, new TypedValue(type, val) ); } --- 230,234 ---- public void setParameter(String name, Object val, Type type) { ! namedParameters.put(name, new TypedValue(type, val) ); } *************** *** 285,289 **** public void setParameterList(String name, Collection vals, Type type) throws HibernateException { ! StringBuffer list = new StringBuffer(16); Iterator iter = vals.iterator(); --- 295,314 ---- public void setParameterList(String name, Collection vals, Type type) throws HibernateException { ! namedParameterLists.put( name, new TypedValue(type, vals) ); ! } ! ! private String bindParameterLists(Map namedParams) { ! Iterator iter = namedParameterLists.entrySet().iterator(); ! String query = queryString; ! while ( iter.hasNext() ) { ! Map.Entry me = (Map.Entry) iter.next(); ! query = bindParameterList( queryString, (String) me.getKey(), (TypedValue) me.getValue(), namedParams ); ! } ! return query; ! } ! ! private String bindParameterList(String queryString, String name, TypedValue typedList, Map namedParams) { ! Collection vals = (Collection) typedList.getValue(); ! Type type = typedList.getType(); StringBuffer list = new StringBuffer(16); Iterator iter = vals.iterator(); *************** *** 291,301 **** while ( iter.hasNext() ) { String alias = name + i++ + StringHelper.UNDERSCORE; ! setParameter(alias, iter.next(), type); list.append( ':' + alias ); if ( iter.hasNext() ) list.append(StringHelper.COMMA_SPACE); } ! queryString = StringHelper.replaceOnce( queryString, ':' + name, list.toString() ); } public void setParameterList(String name, Collection vals) throws HibernateException { setParameterList(name, vals, guessType( vals.iterator().next() ) ); --- 316,328 ---- while ( iter.hasNext() ) { String alias = name + i++ + StringHelper.UNDERSCORE; ! namedParams.put(alias, new TypedValue( type, iter.next() ) ); list.append( ':' + alias ); if ( iter.hasNext() ) list.append(StringHelper.COMMA_SPACE); } ! ! return StringHelper.replace( queryString, ':' + name, list.toString() ); } + public void setParameterList(String name, Collection vals) throws HibernateException { setParameterList(name, vals, guessType( vals.iterator().next() ) ); *************** *** 340,344 **** Map getNamedParams() { ! return namedParams; } --- 367,371 ---- Map getNamedParams() { ! return namedParameters; } |