From 27f86548a6ef2be1f31fb0da155f0025eedfec63 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Tue, 5 Mar 2019 23:03:22 +1300 Subject: [PATCH] #1645 - ENH: Add expression rawOrEmpty() ... as a convenience for conditionally added a raw expression --- src/main/java/io/ebean/ExpressionList.java | 2 +- .../server/expression/DefaultExpressionList.java | 2 +- .../ebeaninternal/server/expression/JunctionExpression.java | 2 +- src/test/java/org/tests/basic/type/TestSqlRowUUID.java | 6 ++++++ src/test/java/org/tests/query/TestWhereRawClause.java | 4 +++- 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/ebean/ExpressionList.java b/src/main/java/io/ebean/ExpressionList.java index d669e91b5..8f727756a 100644 --- a/src/main/java/io/ebean/ExpressionList.java +++ b/src/main/java/io/ebean/ExpressionList.java @@ -1342,7 +1342,7 @@ public interface ExpressionList { * @param raw The raw expression that is typically a subquery * @param values The values which is typically a list or set of id values. */ - ExpressionList rawOrEmpty(String raw, Collection values); + ExpressionList rawOrEmpty(String raw, Collection values); /** * Add a match expression. diff --git a/src/main/java/io/ebeaninternal/server/expression/DefaultExpressionList.java b/src/main/java/io/ebeaninternal/server/expression/DefaultExpressionList.java index 71600f840..e757214bb 100644 --- a/src/main/java/io/ebeaninternal/server/expression/DefaultExpressionList.java +++ b/src/main/java/io/ebeaninternal/server/expression/DefaultExpressionList.java @@ -1077,7 +1077,7 @@ public class DefaultExpressionList implements SpiExpressionList { } @Override - public ExpressionList rawOrEmpty(String raw, Collection values) { + public ExpressionList rawOrEmpty(String raw, Collection values) { if (notEmpty(values)) { add(expr.raw(raw, values)); } diff --git a/src/main/java/io/ebeaninternal/server/expression/JunctionExpression.java b/src/main/java/io/ebeaninternal/server/expression/JunctionExpression.java index 010550a3b..c71f82647 100644 --- a/src/main/java/io/ebeaninternal/server/expression/JunctionExpression.java +++ b/src/main/java/io/ebeaninternal/server/expression/JunctionExpression.java @@ -808,7 +808,7 @@ class JunctionExpression implements SpiJunction, SpiExpression, Expression } @Override - public ExpressionList rawOrEmpty(String raw, Collection values) { + public ExpressionList rawOrEmpty(String raw, Collection values) { return exprList.rawOrEmpty(raw, values); } diff --git a/src/test/java/org/tests/basic/type/TestSqlRowUUID.java b/src/test/java/org/tests/basic/type/TestSqlRowUUID.java index 1997af5d2..e6b833002 100644 --- a/src/test/java/org/tests/basic/type/TestSqlRowUUID.java +++ b/src/test/java/org/tests/basic/type/TestSqlRowUUID.java @@ -57,5 +57,11 @@ public class TestSqlRowUUID extends BaseTestCase { .findList(); assertThat(result).hasSize(1); + + List list = Ebean.find(TUuidEntity.class) + .where().rawOrEmpty("id = any(?::uuid[])", ids) + .findList(); + + assertThat(list).hasSize(1); } } diff --git a/src/test/java/org/tests/query/TestWhereRawClause.java b/src/test/java/org/tests/query/TestWhereRawClause.java index 58b7d9b59..ab7958bd6 100644 --- a/src/test/java/org/tests/query/TestWhereRawClause.java +++ b/src/test/java/org/tests/query/TestWhereRawClause.java @@ -72,10 +72,12 @@ public class TestWhereRawClause extends BaseTestCase { ResetBasicData.reset(); + List vals = asList("Rob", "Fiona", "Jack"); + Query query = Ebean.find(Customer.class) .select("name") .where() - .rawOrEmpty("id in (select c.id from o_customer c where c.name in (?1))", asList("Rob", "Fiona", "Jack")) + .rawOrEmpty("id in (select c.id from o_customer c where c.name in (?1))", vals) .query(); List list = query.findList();