if(key.indexOf("@") != 0) { log.warn("No relationship or attribute <" + key + "> in entity: " + entity); }
if(key.indexOf("@") != 0) { if(!_keysWithWarning.contains(key + "-" + entity)) { _keysWithWarning.add(key + "-" + entity); log.warn("No relationship or attribute <" + key + "> in entity: " + entity); } }
    public static EOEntity destinationEntityForKeyPath(EOEntity entity, String keyPath) {        if(keyPath == null || keyPath.length() == 0) {            return entity;        }        NSArray keyArray = NSArray.componentsSeparatedByString(keyPath, ".");        for(Enumeration keys = keyArray.objectEnumerator(); keys.hasMoreElements(); ) {            String key = (String)keys.nextElement();            EORelationship rel = entity.anyRelationshipNamed(key);            if(rel == null) {                if(entity.anyAttributeNamed(key) == null) {                    if(key.indexOf("@") != 0) {                        log.warn("No relationship or attribute <" + key + "> in entity: " + entity);                    }                }                return null;            }            entity = rel.destinationEntity();        }        return entity;    }