public void applyRestrictionsFor(Class<?> target, Criteria criteria) {
        if(!hasSubclasses()) {
            return;
        }
        CompositeRestriction or = Restrictions.or();
        criteria.add(or);
        if(target == getPersistentType()) {
            or.with(Restrictions.exists(SubclassMapper.DISCRIMINATOR, false));
        }
        for (SubclassMapper<?> subclassMapper : getSubclasses()) {
            subclassMapper.applyRestrictions(target, or);
        }