public List<BlacklistDTO> filterByIpAddress(Integer entityId, String ipAddress, Integer ccfId) { // don't try and filter if there's no IP address to lookup if (StringUtils.isBlank(ipAddress)) { return Collections.emptyList(); } Criteria criteria = getSession() .createCriteria(BlacklistDTO.class) .createAlias("company", "c") .add(Restrictions.eq("c.id", entityId)) .add(Restrictions.eq("type", BlacklistDTO.TYPE_IP_ADDRESS)); Criteria secondCriteria = criteria .createCriteria("metaFieldValue", "fieldValue", CriteriaSpecification.LEFT_JOIN) .add(Restrictions.eq("fieldValue.field.id", ccfId)) .add( Restrictions.sqlRestriction( "{alias}.string_value = ?", ipAddress, Hibernate.STRING)); return secondCriteria.list(); }