[hibernate-commits] Hibernate SVN: r18823 - 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
Wed Feb 17 16:07:43 EST 2010


Author: steve.ebersole at jboss.com
Date: 2010-02-17 16:07:42 -0500 (Wed, 17 Feb 2010)
New Revision: 18823

Modified:
   core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/predicate/CompoundPredicate.java
   core/trunk/entitymanager/src/test/java/org/hibernate/ejb/criteria/basic/ExpressionsTest.java
Log:
HHH-4583 - Incorrect handling of empty conjunction and disjunction


Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/predicate/CompoundPredicate.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/predicate/CompoundPredicate.java	2010-02-17 19:56:41 UTC (rev 18822)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/predicate/CompoundPredicate.java	2010-02-17 21:07:42 UTC (rev 18823)
@@ -116,9 +116,9 @@
 
 	public String render(CriteriaQueryCompiler.RenderingContext renderingContext) {
 		if ( getExpressions().size() == 0 ) {
-			return getOperator() == Predicate.BooleanOperator.AND
-					? "true"
-					: "false";
+			return getOperator() == BooleanOperator.AND
+					? "1=1" // true
+					: "0=1"; // false
 		}
 		if ( getExpressions().size() == 1 ) {
 			return ( (Renderable) getExpressions().get(0) ).render( renderingContext );

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-02-17 19:56:41 UTC (rev 18822)
+++ core/trunk/entitymanager/src/test/java/org/hibernate/ejb/criteria/basic/ExpressionsTest.java	2010-02-17 21:07:42 UTC (rev 18823)
@@ -25,6 +25,7 @@
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
+import java.util.List;
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
@@ -69,6 +70,18 @@
 		super.tearDown();
 	}
 
+	public void testEmptyConjunction() {
+		EntityManager em = getOrCreateEntityManager();
+		em.getTransaction().begin();
+		CriteriaQuery<Product> criteria = builder.createQuery( Product.class );
+		criteria.from( Product.class );
+		criteria.where( builder.and() );
+		List<Product> result = em.createQuery( criteria ).getResultList();
+		assertEquals( 1, result.size() );
+		em.getTransaction().commit();
+		em.close();
+	}
+
 	public void testDiff() {
 		EntityManager em = getOrCreateEntityManager();
 		em.getTransaction().begin();



More information about the hibernate-commits mailing list