#715 - isNull() expression on @OneToMany or @ManyToMany produces incorrect SQL - should translate this to be same as isEmpty() and result in exists subquery

This commit is contained in:
Robin Bygrave
2016-05-20 17:53:11 +12:00
parent 0510304c0f
commit a20822a9e1
12 changed files with 171 additions and 55 deletions
@@ -111,6 +111,7 @@ public class DefaultExampleExpression implements SpiExpression, ExampleExpressio
@Override
public void containsMany(BeanDescriptor<?> desc, ManyWhereJoins whereManyJoins) {
list = buildExpressions(desc);
if (list != null) {
for (int i = 0; i < list.size(); i++) {
list.get(i).containsMany(desc, whereManyJoins);
@@ -118,6 +119,11 @@ public class DefaultExampleExpression implements SpiExpression, ExampleExpressio
}
}
@Override
public void prepareExpression(BeanQueryRequest<?> request) {
// do nothing
}
@Override
public ExampleExpression includeZeros() {
includeZeros = true;
@@ -194,11 +200,6 @@ public class DefaultExampleExpression implements SpiExpression, ExampleExpressio
}
}
@Override
public void prepareExpression(BeanQueryRequest<?> request) {
list = buildExpressions(request);
}
/**
* Return a hash for AutoTune query identification.
*/
@@ -259,15 +260,10 @@ public class DefaultExampleExpression implements SpiExpression, ExampleExpressio
/**
* Build the List of expressions.
*/
private ArrayList<SpiExpression> buildExpressions(BeanQueryRequest<?> request) {
private ArrayList<SpiExpression> buildExpressions(BeanDescriptor<?> beanDescriptor) {
ArrayList<SpiExpression> list = new ArrayList<SpiExpression>();
OrmQueryRequest<?> r = (OrmQueryRequest<?>) request;
BeanDescriptor<?> beanDescriptor = r.getBeanDescriptor();
addExpressions(list, beanDescriptor, entity, null);
return list;
}