[hibernate-commits] Hibernate SVN: r10587 - in branches/Branch_3_2/Hibernate3: src/org/hibernate/impl test/org/hibernate/test/legacy

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Mon Oct 16 11:00:02 EDT 2006


Author: max.andersen at jboss.com
Date: 2006-10-16 10:59:57 -0400 (Mon, 16 Oct 2006)
New Revision: 10587

Modified:
   branches/Branch_3_2/Hibernate3/src/org/hibernate/impl/AbstractQueryImpl.java
   branches/Branch_3_2/Hibernate3/test/org/hibernate/test/legacy/SQLFunctionsTest.java
Log:
HHH-2037 provide Query.setProperties(Map) (merge from head)

Modified: branches/Branch_3_2/Hibernate3/src/org/hibernate/impl/AbstractQueryImpl.java
===================================================================
--- branches/Branch_3_2/Hibernate3/src/org/hibernate/impl/AbstractQueryImpl.java	2006-10-16 14:56:30 UTC (rev 10586)
+++ branches/Branch_3_2/Hibernate3/src/org/hibernate/impl/AbstractQueryImpl.java	2006-10-16 14:59:57 UTC (rev 10587)
@@ -741,6 +741,30 @@
 		return setParameterList( name, Arrays.asList(vals) );
 	}
 
+	public Query setProperties(Map map) throws HibernateException {
+		String[] params = getNamedParameters();
+		for (int i = 0; i < params.length; i++) {
+			String namedParam = params[i];
+				final Object object = map.get(namedParam);
+				if(object==null) {
+					continue;
+				}
+				Class retType = object.getClass();
+				if ( Collection.class.isAssignableFrom( retType ) ) {
+					setParameterList( namedParam, ( Collection ) object );
+				}
+				else if ( retType.isArray() ) {
+					setParameterList( namedParam, ( Object[] ) object );
+				}
+				else {
+					setParameter( namedParam, object, determineType( namedParam, retType ) );
+				}
+
+			
+		}
+		return this;				
+	}
+
 	public Query setProperties(Object bean) throws HibernateException {
 		Class clazz = bean.getClass();
 		String[] params = getNamedParameters();

Modified: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/legacy/SQLFunctionsTest.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/legacy/SQLFunctionsTest.java	2006-10-16 14:56:30 UTC (rev 10586)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/legacy/SQLFunctionsTest.java	2006-10-16 14:59:57 UTC (rev 10587)
@@ -3,6 +3,7 @@
 
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -29,7 +30,6 @@
 import org.hibernate.dialect.SybaseDialect;
 import org.hibernate.dialect.TimesTenDialect;
 import org.hibernate.dialect.function.SQLFunction;
-import org.hibernate.engine.SessionFactoryImplementor;
 
 
 public class SQLFunctionsTest extends LegacyTestCase {
@@ -138,6 +138,38 @@
 		s.close();
 	}
 
+	public void testSetPropertiesMap() throws Exception {
+		Session s = openSession();
+		Transaction t = s.beginTransaction();
+		Simple simple = new Simple();
+		simple.setName("Simple 1");
+		s.save(simple, new Long(10) );
+		Map parameters = new HashMap();
+		parameters.put("name", simple.getName());
+		parameters.put("count", new Integer(simple.getCount()));
+		
+		Query q = s.createQuery("from Simple s where s.name=:name and s.count=:count");
+		q.setProperties(((Map)parameters));
+		assertTrue( q.list().get(0)==simple );
+		
+		List l = new ArrayList();
+		l.add("Simple 1");
+		l.add("Slimeball");
+		parameters.put("several", l);
+		q = s.createQuery("from Simple s where s.name in (:several)");
+		q.setProperties(parameters);
+		assertTrue( q.list().get(0)==simple );
+
+
+		parameters.put("stuff", l.toArray(new String[0]));
+		q = s.createQuery("from Simple s where s.name in (:stuff)");
+		q.setProperties(parameters);
+		assertTrue( q.list().get(0)==simple );
+		s.delete(simple);
+		t.commit();
+		s.close();
+	}
+
 	public void testBroken() throws Exception {
 		if (getDialect() instanceof Oracle9Dialect) return;
 		Session s = openSession();




More information about the hibernate-commits mailing list