diff --git a/src/main/java/com/avaje/ebean/ExpressionFactory.java b/src/main/java/com/avaje/ebean/ExpressionFactory.java index a5647fc78..dc1529c04 100644 --- a/src/main/java/com/avaje/ebean/ExpressionFactory.java +++ b/src/main/java/com/avaje/ebean/ExpressionFactory.java @@ -251,6 +251,11 @@ public interface ExpressionFactory { */ Expression idEq(Object value); + /** + * Id IN a list of Id values. + */ + Expression idIn(Object... idValues); + /** * Id IN a list of Id values. */ diff --git a/src/main/java/com/avaje/ebean/ExpressionList.java b/src/main/java/com/avaje/ebean/ExpressionList.java index e5ab15654..f05031add 100644 --- a/src/main/java/com/avaje/ebean/ExpressionList.java +++ b/src/main/java/com/avaje/ebean/ExpressionList.java @@ -758,6 +758,11 @@ public interface ExpressionList { */ ExpressionList notExists(Query subQuery); + /** + * Id IN a list of id values. + */ + ExpressionList idIn(Object... idValues); + /** * Id IN a list of id values. */ diff --git a/src/main/java/com/avaje/ebeaninternal/server/expression/DefaultExpressionFactory.java b/src/main/java/com/avaje/ebeaninternal/server/expression/DefaultExpressionFactory.java index c74f9b339..60eb6397d 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/expression/DefaultExpressionFactory.java +++ b/src/main/java/com/avaje/ebeaninternal/server/expression/DefaultExpressionFactory.java @@ -16,6 +16,7 @@ import com.avaje.ebean.search.TextSimple; import com.avaje.ebeaninternal.api.SpiExpressionFactory; import com.avaje.ebeaninternal.api.SpiQuery; +import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Map; @@ -365,6 +366,13 @@ public class DefaultExpressionFactory implements SpiExpressionFactory { return new IdInExpression(idList); } + /** + * Id IN a list of id values. + */ + public Expression idIn(Object... idValues) { + return new IdInExpression(Arrays.asList(idValues)); + } + /** * All Equal - Map containing property names and their values. *

diff --git a/src/main/java/com/avaje/ebeaninternal/server/expression/DefaultExpressionList.java b/src/main/java/com/avaje/ebeaninternal/server/expression/DefaultExpressionList.java index 1cecab544..bb6ce53e6 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/expression/DefaultExpressionList.java +++ b/src/main/java/com/avaje/ebeaninternal/server/expression/DefaultExpressionList.java @@ -33,7 +33,7 @@ public class DefaultExpressionList implements SpiExpressionList { protected final Query query; - protected final ExpressionList parentExprList; + private final ExpressionList parentExprList; protected transient ExpressionFactory expr; @@ -57,11 +57,11 @@ public class DefaultExpressionList implements SpiExpressionList { this(query, query.getExpressionFactory(), parentExprList); } - public DefaultExpressionList(Query query, ExpressionFactory expr, ExpressionList parentExprList) { + DefaultExpressionList(Query query, ExpressionFactory expr, ExpressionList parentExprList) { this(query, expr, parentExprList, new ArrayList()); } - protected DefaultExpressionList(Query query, ExpressionFactory expr, ExpressionList parentExprList, List list) { + DefaultExpressionList(Query query, ExpressionFactory expr, ExpressionList parentExprList, List list) { this(query, expr, parentExprList, list, false); } @@ -667,6 +667,12 @@ public class DefaultExpressionList implements SpiExpressionList { return this; } + @Override + public ExpressionList idIn(Object... idValues) { + add(expr.idIn(idValues)); + return this; + } + @Override public ExpressionList idIn(List idList) { add(expr.idIn(idList)); diff --git a/src/main/java/com/avaje/ebeaninternal/server/expression/JunctionExpression.java b/src/main/java/com/avaje/ebeaninternal/server/expression/JunctionExpression.java index a9ef68d06..fd228160e 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/expression/JunctionExpression.java +++ b/src/main/java/com/avaje/ebeaninternal/server/expression/JunctionExpression.java @@ -482,6 +482,11 @@ class JunctionExpression implements SpiJunction, SpiExpression, Expression return exprList.idEq(value); } + @Override + public ExpressionList idIn(Object... idValues) { + return exprList.idIn(idValues); + } + @Override public ExpressionList idIn(List idValues) { return exprList.idIn(idValues); diff --git a/src/test/java/com/avaje/tests/query/TestQueryInIdTypeConversion.java b/src/test/java/com/avaje/tests/query/TestQueryInIdTypeConversion.java index 911f8ff63..f8c6e529c 100644 --- a/src/test/java/com/avaje/tests/query/TestQueryInIdTypeConversion.java +++ b/src/test/java/com/avaje/tests/query/TestQueryInIdTypeConversion.java @@ -1,15 +1,14 @@ package com.avaje.tests.query; -import java.util.ArrayList; -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; - import com.avaje.ebean.BaseTestCase; import com.avaje.ebean.Ebean; import com.avaje.tests.model.basic.Customer; import com.avaje.tests.model.basic.ResetBasicData; +import org.junit.Test; + +import java.util.List; + +import static org.junit.Assert.assertNotNull; public class TestQueryInIdTypeConversion extends BaseTestCase { @@ -18,13 +17,8 @@ public class TestQueryInIdTypeConversion extends BaseTestCase { ResetBasicData.reset(); - List idList = new ArrayList(); - idList.add("1"); - idList.add("2"); - - List list = Ebean.find(Customer.class).where().idIn(idList).findList(); - - Assert.assertNotNull(list); + List list = Ebean.find(Customer.class).where().idIn("1", "2").findList(); + assertNotNull(list); } }