[hibernate-commits] Hibernate SVN: r18826 - in core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria: predicate and 1 other directory.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Thu Feb 18 00:07:21 EST 2010
Author: steve.ebersole at jboss.com
Date: 2010-02-18 00:07:20 -0500 (Thu, 18 Feb 2010)
New Revision: 18826
Modified:
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/CriteriaBuilderImpl.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/predicate/CompoundPredicate.java
Log:
HHH-4583 - Incorrect handling of empty conjunction and disjunction
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/CriteriaBuilderImpl.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/CriteriaBuilderImpl.java 2010-02-18 04:31:08 UTC (rev 18825)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/CriteriaBuilderImpl.java 2010-02-18 05:07:20 UTC (rev 18826)
@@ -314,6 +314,17 @@
* {@inheritDoc}
*/
public Predicate isTrue(Expression<Boolean> expression) {
+ if ( CompoundPredicate.class.isInstance( expression ) ) {
+ final CompoundPredicate predicate = (CompoundPredicate) expression;
+ if ( predicate.getOperator() == Predicate.BooleanOperator.OR
+ && predicate.getExpressions().size() == 0 ) {
+ predicate.not();
+ }
+ return predicate;
+ }
+ else if ( Predicate.class.isInstance( expression ) ) {
+ return (Predicate) expression;
+ }
return new BooleanAssertionPredicate( this, expression, Boolean.TRUE );
}
@@ -321,6 +332,22 @@
* {@inheritDoc}
*/
public Predicate isFalse(Expression<Boolean> expression) {
+ if ( CompoundPredicate.class.isInstance( expression ) ) {
+ final CompoundPredicate predicate = (CompoundPredicate) expression;
+ if ( predicate.getOperator() == Predicate.BooleanOperator.OR
+ && predicate.getExpressions().size() == 0 ) {
+ // nothing to do
+ }
+ else {
+ predicate.not();
+ }
+ return predicate;
+ }
+ else if ( Predicate.class.isInstance( expression ) ) {
+ final Predicate predicate = (Predicate) expression;
+ predicate.not();
+ return predicate;
+ }
return new BooleanAssertionPredicate( this, expression, Boolean.FALSE );
}
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-18 04:31:08 UTC (rev 18825)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/predicate/CompoundPredicate.java 2010-02-18 05:07:20 UTC (rev 18826)
@@ -116,7 +116,11 @@
public String render(CriteriaQueryCompiler.RenderingContext renderingContext) {
if ( getExpressions().size() == 0 ) {
- return getOperator() == BooleanOperator.AND
+ boolean implicitTrue = getOperator() == BooleanOperator.AND;
+ if ( isNegated() ) {
+ implicitTrue = !implicitTrue;
+ }
+ return implicitTrue
? "1=1" // true
: "0=1"; // false
}
More information about the hibernate-commits
mailing list