#355 - ENH: Add notIn(...) expressions. Just to make life easier in those cases

This commit is contained in:
Robin Bygrave
2015-07-27 20:39:34 +12:00
parent 5a55b5235d
commit 87b485cfa4
9 changed files with 237 additions and 22 deletions
@@ -18,18 +18,20 @@ class InQueryExpression extends AbstractExpression {
private static final long serialVersionUID = 666990277309851644L;
private final boolean not;
private final SpiQuery<?> subQuery;
private transient CQuery<?> compiledSubQuery;
public InQueryExpression(String propertyName, SpiQuery<?> subQuery) {
public InQueryExpression(String propertyName, SpiQuery<?> subQuery, boolean not) {
super(propertyName);
this.subQuery = subQuery;
this.not = not;
}
public void queryAutoFetchHash(HashQueryPlanBuilder builder) {
builder.add(InQueryExpression.class).add(propName);
builder.add(InQueryExpression.class).add(propName).add(not);
subQuery.queryAutofetchHash(builder);
}
@@ -61,9 +63,11 @@ class InQueryExpression extends AbstractExpression {
subSelect = subSelect.replace('\n', ' ');
String propertyName = getPropertyName();
request.append(" (");
request.append(propertyName);
request.append(") in (");
request.append(" (").append(propertyName).append(")");
if (not) {
request.append(" not");
}
request.append(" in (");
request.append(subSelect);
request.append(") ");
}