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