diff --git a/src/main/java/com/avaje/ebeaninternal/server/expression/NotExpression.java b/src/main/java/com/avaje/ebeaninternal/server/expression/NotExpression.java index 6badb6947..6dbaf73f3 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/expression/NotExpression.java +++ b/src/main/java/com/avaje/ebeaninternal/server/expression/NotExpression.java @@ -43,7 +43,8 @@ final class NotExpression implements SpiExpression { } public void queryPlanHash(BeanQueryRequest request, HashQueryPlanBuilder builder) { - queryAutoFetchHash(builder); + builder.add(NotExpression.class); + exp.queryPlanHash(request, builder); } public int queryBindHash() { diff --git a/src/test/java/com/avaje/tests/query/other/TestSubQueryBinding.java b/src/test/java/com/avaje/tests/query/other/TestSubQueryBinding.java new file mode 100644 index 000000000..9537a4361 --- /dev/null +++ b/src/test/java/com/avaje/tests/query/other/TestSubQueryBinding.java @@ -0,0 +1,29 @@ +package com.avaje.tests.query.other; + +import org.junit.Test; + +import com.avaje.ebean.BaseTestCase; +import com.avaje.ebean.Ebean; +import com.avaje.ebean.EbeanServer; +import com.avaje.ebean.Expression; +import com.avaje.ebean.Query; +import com.avaje.tests.model.basic.Customer; + +public class TestSubQueryBinding extends BaseTestCase { + + @Test + public void test() { + + EbeanServer server = Ebean.getServer(null); + + Query someCustomerIds = server.find(Customer.class).select("id").where().lt("id", 5).query(); + + Expression someCustIdsExpression = server.getExpressionFactory().in("id", someCustomerIds); + + Query query = server.find(Customer.class).where().like("name", "Rob%").not(someCustIdsExpression).query(); + + query.findList(); + + } + +}