[hibernate-commits] Hibernate SVN: r19930 - in core/trunk/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:35 EDT 2010
Author: steve.ebersole at jboss.com
Date: 2010-07-10 09:48:34 -0400 (Sat, 10 Jul 2010)
New Revision: 19930
Modified:
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/ExpressionImpl.java
core/trunk/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/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/ExpressionImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/ExpressionImpl.java 2010-07-10 13:48:15 UTC (rev 19929)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/ExpressionImpl.java 2010-07-10 13:48:34 UTC (rev 19930)
@@ -88,7 +88,7 @@
* {@inheritDoc}
*/
public Predicate in(Collection<?> values) {
- return criteriaBuilder().in( this, values );
+ return criteriaBuilder().in( this, values.toArray() );
}
/**
Modified: core/trunk/entitymanager/src/test/java/org/hibernate/ejb/criteria/basic/ExpressionsTest.java
===================================================================
--- core/trunk/entitymanager/src/test/java/org/hibernate/ejb/criteria/basic/ExpressionsTest.java 2010-07-10 13:48:15 UTC (rev 19929)
+++ core/trunk/entitymanager/src/test/java/org/hibernate/ejb/criteria/basic/ExpressionsTest.java 2010-07-10 13:48:34 UTC (rev 19930)
@@ -25,11 +25,13 @@
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.util.Collections;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Expression;
import javax.persistence.criteria.ParameterExpression;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
@@ -58,7 +60,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 ) );
@@ -248,4 +250,39 @@
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