@Override
protected void processCriteria(Criteria criteria,
CriteriaDescriptor criteriaDescriptor, boolean isCount) {
DetachedCriteria relatedResourcesCriteria = DetachedCriteria.forClass(Resource.class);
relatedResourcesCriteria.createCriteria(Resource.FIELD_SUPPLIES, "_supplies", Criteria.LEFT_JOIN);
relatedResourcesCriteria.createCriteria(Resource.FIELD_NEEDS, "_needs", Criteria.LEFT_JOIN);
Disjunction userIdRestriction = Restrictions.disjunction();
userIdRestriction.add(Restrictions.eq(Resource.FIELD_OWNER + "." + User.FIELD_ID(), userId));
userIdRestriction.add(Restrictions.eq("_supplies." + Supply.FIELD_USER + "." + User.FIELD_ID(), userId));
userIdRestriction.add(Restrictions.eq("_needs." + Need.FIELD_USER + "." + User.FIELD_ID(), userId));
relatedResourcesCriteria.add(userIdRestriction);