mirror of
https://github.com/ebean-orm/ebean.git
synced 2026-10-23 16:47:18 +00:00
#1645 - ENH: Add expression rawOrEmpty() ... as a convenience for conditionally added a raw expression
This commit is contained in:
@@ -1342,7 +1342,7 @@ public interface ExpressionList<T> {
|
||||
* @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<T> rawOrEmpty(String raw, Collection<Object> values);
|
||||
ExpressionList<T> rawOrEmpty(String raw, Collection<?> values);
|
||||
|
||||
/**
|
||||
* Add a match expression.
|
||||
|
||||
@@ -1077,7 +1077,7 @@ public class DefaultExpressionList<T> implements SpiExpressionList<T> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExpressionList<T> rawOrEmpty(String raw, Collection<Object> values) {
|
||||
public ExpressionList<T> rawOrEmpty(String raw, Collection<?> values) {
|
||||
if (notEmpty(values)) {
|
||||
add(expr.raw(raw, values));
|
||||
}
|
||||
|
||||
@@ -808,7 +808,7 @@ class JunctionExpression<T> implements SpiJunction<T>, SpiExpression, Expression
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExpressionList<T> rawOrEmpty(String raw, Collection<Object> values) {
|
||||
public ExpressionList<T> rawOrEmpty(String raw, Collection<?> values) {
|
||||
return exprList.rawOrEmpty(raw, values);
|
||||
}
|
||||
|
||||
|
||||
@@ -57,5 +57,11 @@ public class TestSqlRowUUID extends BaseTestCase {
|
||||
.findList();
|
||||
|
||||
assertThat(result).hasSize(1);
|
||||
|
||||
List<TUuidEntity> list = Ebean.find(TUuidEntity.class)
|
||||
.where().rawOrEmpty("id = any(?::uuid[])", ids)
|
||||
.findList();
|
||||
|
||||
assertThat(list).hasSize(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,10 +72,12 @@ public class TestWhereRawClause extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
List<String> vals = asList("Rob", "Fiona", "Jack");
|
||||
|
||||
Query<Customer> 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<Customer> list = query.findList();
|
||||
|
||||
Reference in New Issue
Block a user