Skip to content

Commit 0fc9a1a

Browse files
rbygravePromanSEW
andauthored
Bug fix and change filterMany to put predicates into JOIN clause, Fix for #3626 (#3707)
* Problem with filterMany * Missing id * Other test * Fix * Update TestQueryFilterMany.java * #3706 Bug fix and change filterMany to put predicates into JOIN clause, Fix for #3626 * Fix tests for Postgres, Oracle, Sql Server --------- Co-authored-by: Roman Parshikov <[email protected]>
1 parent f7b4edb commit 0fc9a1a

25 files changed

+189
-92
lines changed

ebean-core/src/main/java/io/ebeaninternal/api/SpiQueryManyJoin.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,4 @@ public interface SpiQueryManyJoin {
1515
*/
1616
String fetchOrderBy();
1717

18-
/**
19-
* Wrap the filter many expression with a condition allowing lEFT JOIN null matching row.
20-
*/
21-
String idNullOr(String filterManyExpression);
2218
}

ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanFkeyProperty.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,6 @@ public String toString() {
3636
return "prefix:" + prefix + " name:" + name + " dbColumn:" + dbColumn + " ph:" + placeHolder;
3737
}
3838

39-
@Override
40-
public String idNullOr(String filterManyExpression) {
41-
throw new UnsupportedOperationException();
42-
}
43-
4439
@Override
4540
public boolean isAggregation() {
4641
return false;

ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanProperty.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -513,11 +513,6 @@ public boolean isAssignableFrom(Class<?> type) {
513513
return owningType.isAssignableFrom(type);
514514
}
515515

516-
@Override
517-
public String idNullOr(String filterManyExpression) {
518-
throw new UnsupportedOperationException();
519-
}
520-
521516
@Override
522517
public void loadIgnore(DbReadContext ctx) {
523518
ctx.dataReader().incrementPos(1);

ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanPropertyAssocMany.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -634,11 +634,6 @@ public String fetchOrderBy() {
634634
return fetchOrderBy;
635635
}
636636

637-
@Override
638-
public String idNullOr(String filterManyExpression) {
639-
return targetIdBinder.idNullOr(name, filterManyExpression);
640-
}
641-
642637
/**
643638
* Return the order by for use when lazy loading the associated collection.
644639
*/

ebean-core/src/main/java/io/ebeaninternal/server/deploy/DbSqlContext.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,4 +154,9 @@ public interface DbSqlContext {
154154
* as it was already added to the query.
155155
*/
156156
boolean joinAdded();
157+
158+
/**
159+
* Include the filter many predicates if specified into the JOIN clause.
160+
*/
161+
void includeFilterMany();
157162
}

ebean-core/src/main/java/io/ebeaninternal/server/deploy/id/IdBinder.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,6 @@ public interface IdBinder {
2727
*/
2828
void initialise();
2929

30-
/**
31-
* Wrap the filter many expression with a condition allowing lEFT JOIN null matching row.
32-
*/
33-
String idNullOr(String name, String filterManyExpression);
34-
3530
String idSelect();
3631

3732
/**

ebean-core/src/main/java/io/ebeaninternal/server/deploy/id/IdBinderEmbedded.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,20 +45,6 @@ public void initialise() {
4545
this.idInValueSql = idInExpandedForm ? idInExpanded() : idInCompressed();
4646
}
4747

48-
@Override
49-
public String idNullOr(String prefix, String filterManyExpression) {
50-
StringBuilder sb = new StringBuilder(100);
51-
sb.append("((");
52-
for (int i = 0; i < props.length; i++) {
53-
if (i > 0) {
54-
sb.append(" and ");
55-
}
56-
sb.append("${").append(prefix).append('}').append(props[i].dbColumn()).append(" is null");
57-
}
58-
sb.append(") or (").append(filterManyExpression).append("))");
59-
return sb.toString();
60-
}
61-
6248
@Override
6349
public String idSelect() {
6450
return embIdProperty.name();

ebean-core/src/main/java/io/ebeaninternal/server/deploy/id/IdBinderEmpty.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,6 @@ public IdBinderEmpty() {
2828
public void initialise() {
2929
}
3030

31-
@Override
32-
public String idNullOr(String name, String filterManyExpression) {
33-
throw new UnsupportedOperationException();
34-
}
35-
3631
@Override
3732
public String idSelect() {
3833
return "";

ebean-core/src/main/java/io/ebeaninternal/server/deploy/id/IdBinderSimple.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -261,9 +261,4 @@ public String cacheKeyFromBean(EntityBean bean) {
261261
final Object value = idProperty.getValue(bean);
262262
return scalarType.format(value);
263263
}
264-
265-
@Override
266-
public String idNullOr(String prefix, String filterManyExpression) {
267-
return "(${" + prefix + "}" + idProperty.dbColumn() + " is null or (" + filterManyExpression + "))";
268-
}
269264
}

ebean-core/src/main/java/io/ebeaninternal/server/el/ElPropertyChain.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -286,8 +286,4 @@ public void pathSet(Object bean, Object value) {
286286
}
287287
}
288288

289-
@Override
290-
public String idNullOr(String filterManyExpression) {
291-
throw new UnsupportedOperationException();
292-
}
293289
}

0 commit comments

Comments
 (0)