[hibernate-commits] Hibernate SVN: r19929 - in core/branches/Branch_3_5/entitymanager/src: test/java/org/hibernate/ejb/criteria/basic and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Sat Jul 10 09:48:15 EDT 2010


Author: steve.ebersole at jboss.com
Date: 2010-07-10 09:48:15 -0400 (Sat, 10 Jul 2010)
New Revision: 19929

Modified:
   core/branches/Branch_3_5/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/ExpressionImpl.java
   core/branches/Branch_3_5/entitymanager/src/test/java/org/hibernate/ejb/criteria/basic/ExpressionsTest.java
Log:
HHH-5370 - Building IN condition with CriteriaBuilder providing collection of values not working.


Modified: core/branches/Branch_3_5/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/ExpressionImpl.java
===================================================================
--- core/branches/Branch_3_5/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/ExpressionImpl.java	2010-07-10 12:48:19 UTC (rev 19928)
+++ core/branches/Branch_3_5/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/ExpressionImpl.java	2010-07-10 13:48:15 UTC (rev 19929)
@@ -88,7 +88,7 @@
 	 * {@inheritDoc}
 	 */
 	public Predicate in(Collection<?> values) {
-		return criteriaBuilder().in( this, values );
+		return criteriaBuilder().in( this, values.toArray() );
 	}
 
 	/**

Modified: core/branches/Branch_3_5/entitymanager/src/test/java/org/hibernate/ejb/criteria/basic/ExpressionsTest.java
===================================================================
--- core/branches/Branch_3_5/entitymanager/src/test/java/org/hibernate/ejb/criteria/basic/ExpressionsTest.java	2010-07-10 12:48:19 UTC (rev 19928)
+++ core/branches/Branch_3_5/entitymanager/src/test/java/org/hibernate/ejb/criteria/basic/ExpressionsTest.java	2010-07-10 13:48:15 UTC (rev 19929)
@@ -25,6 +25,7 @@
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
+import java.util.Collections;
 import java.util.List;
 import javax.persistence.EntityManager;
 import javax.persistence.TypedQuery;
@@ -58,7 +59,7 @@
 		product.setId( "product1" );
 		product.setPrice( 1.23d );
 		product.setQuantity( 2 );
-		product.setPartNumber( Integer.MAX_VALUE + 1 );
+		product.setPartNumber( ((long)Integer.MAX_VALUE) + 1 );
 		product.setRating( 1.999f );
 		product.setSomeBigInteger( BigInteger.valueOf( 987654321 ) );
 		product.setSomeBigDecimal( BigDecimal.valueOf( 987654.321 ) );
@@ -246,4 +247,40 @@
 		AbstractQueryImpl hqlQueryImpl = (AbstractQueryImpl) query;
 		return hqlQueryImpl.getParameterMetadata().getNamedParameterNames().size();
 	}
+
+	public void testInExplicitTupleList() {
+		EntityManager em = getOrCreateEntityManager();
+		em.getTransaction().begin();
+		CriteriaQuery<Product> criteria = builder.createQuery( Product.class );
+		Root<Product> from = criteria.from( Product.class );
+		criteria.where( from.get( Product_.partNumber ).in( Collections.singletonList( ((long)Integer.MAX_VALUE) + 1 ) ) );
+		List<Product> result = em.createQuery( criteria ).getResultList();
+		assertEquals( 1, result.size() );
+		em.getTransaction().commit();
+		em.close();
+	}
+
+	public void testInExplicitTupleListVarargs() {
+		EntityManager em = getOrCreateEntityManager();
+		em.getTransaction().begin();
+		CriteriaQuery<Product> criteria = builder.createQuery( Product.class );
+		Root<Product> from = criteria.from( Product.class );
+		criteria.where( from.get( Product_.partNumber ).in( ((long)Integer.MAX_VALUE) + 1 ) );
+		List<Product> result = em.createQuery( criteria ).getResultList();
+		assertEquals( 1, result.size() );
+		em.getTransaction().commit();
+		em.close();
+	}
+
+	public void testInExpressionVarargs() {
+		EntityManager em = getOrCreateEntityManager();
+		em.getTransaction().begin();
+		CriteriaQuery<Product> criteria = builder.createQuery( Product.class );
+		Root<Product> from = criteria.from( Product.class );
+		criteria.where( from.get( Product_.partNumber ).in( from.get( Product_.partNumber ) ) );
+		List<Product> result = em.createQuery( criteria ).getResultList();
+		assertEquals( 1, result.size() );
+		em.getTransaction().commit();
+		em.close();
+	}
 }



More information about the hibernate-commits mailing list