@Override public A findByAttrUniqueValue(final String schemaKey, final PlainAttrValue attrUniqueValue) { PlainSchema schema = plainSchemaDAO.find(schemaKey); if (schema == null) { LOG.error("Invalid schema name '{}'", schemaKey); return null; } if (!schema.isUniqueConstraint()) { LOG.error("This schema has not unique constraint: '{}'", schemaKey); return null; } List<A> result = findByAttrValue(schemaKey, attrUniqueValue); return result.isEmpty() ? null : result.iterator().next(); }
@Override @SuppressWarnings("unchecked") public List<A> findByAttrValue(final String schemaKey, final PlainAttrValue attrValue) { PlainSchema schema = plainSchemaDAO.find(schemaKey); if (schema == null) { LOG.error("Invalid schema name '{}'", schemaKey); return Collections.<A>emptyList(); } String entityName = schema.isUniqueConstraint() ? getAnyUtils().plainAttrUniqueValueClass().getName() : getAnyUtils().plainAttrValueClass().getName(); Query query = findByAttrValueQuery(entityName); query.setParameter("schemaKey", schemaKey); query.setParameter("stringValue", attrValue.getStringValue()); query.setParameter( "booleanValue", attrValue.getBooleanValue() == null ? null : ((AbstractPlainAttrValue) attrValue) .getBooleanAsInteger(attrValue.getBooleanValue())); if (attrValue.getDateValue() == null) { query.setParameter("dateValue", null); } else { query.setParameter("dateValue", attrValue.getDateValue(), TemporalType.TIMESTAMP); } query.setParameter("longValue", attrValue.getLongValue()); query.setParameter("doubleValue", attrValue.getDoubleValue()); List<A> result = new ArrayList<>(); for (PlainAttrValue value : (List<PlainAttrValue>) query.getResultList()) { A any = (A) value.getAttr().getOwner(); if (!result.contains(any)) { result.add(any); } } return result; }