QueryRule[] nestedrules = rule.getNestedRules();
predicate = _createWhere(db, mapper, em, root, cq, cb, new int[2], joinHash,
nestedrules);
break;
case SUBQUERY:
SubQueryRule sqr = (SubQueryRule) rule;
Subquery sq = cq.subquery(sqr.getSubQueryResultClass());
Root<IN> sqFrom = sq.from(sqr.getSubQueryFromClass());
Mapper<IN> sqMapper = db.getMapper(sqr.getSubQueryFromClass().getName());
Predicate where = _createWhere(db, sqMapper, em, sqFrom, cq, cb, new int[2], joinHash,
(QueryRule[]) sqr.getValue());
sq.select(sqFrom.get(sqr.getSubQueryAttributeJpa())).where(where);
// the operator of subquery should be handled in
// the right way such that no code duplication
// should occure
// for the moment only in will work (more to
// come)
String fieldForSubQuery = sqr.getJpaAttribute();
if (sqr.getSubQueryOperator().equals(Operator.IN))
{
predicate = cb.in(root.get(fieldForSubQuery)).value(sq);
}
else
{