From c3affd920361609840203d09a0932f50d94ea312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Ga=CC=88rtner?= Date: Mon, 21 Sep 2015 08:47:19 +0200 Subject: [PATCH] prevent NPE when baseKeyPath is null and therefore no relationship is found --- .../eof/qualifiers/ERXExistsQualifier.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Frameworks/Core/ERExtensions/Sources/er/extensions/eof/qualifiers/ERXExistsQualifier.java b/Frameworks/Core/ERExtensions/Sources/er/extensions/eof/qualifiers/ERXExistsQualifier.java index 189aedbd58e..137489b146c 100644 --- a/Frameworks/Core/ERExtensions/Sources/er/extensions/eof/qualifiers/ERXExistsQualifier.java +++ b/Frameworks/Core/ERExtensions/Sources/er/extensions/eof/qualifiers/ERXExistsQualifier.java @@ -249,7 +249,7 @@ public String sqlStringForSQLExpression(EOQualifier qualifier, EOSQLExpression e } String srcEntityForeignKey = null; - NSArray sourceAttributes = relationship.sourceAttributes(); + NSArray sourceAttributes = relationship != null ? relationship.sourceAttributes() : null; if (sourceAttributes != null && sourceAttributes.count() > 0) { EOAttribute fk = sourceAttributes.lastObject(); srcEntityForeignKey = expression.sqlStringForAttribute(fk); @@ -259,8 +259,14 @@ public String sqlStringForSQLExpression(EOQualifier qualifier, EOSQLExpression e srcEntityForeignKey = expression.sqlStringForAttribute(pk); } - EOJoin parentChildJoin = ERXArrayUtilities.firstObject(relationship.joins()); - String destEntityForeignKey = "." + expression.sqlStringForSchemaObjectName(parentChildJoin.destinationAttribute().columnName()); + String destEntityForeignKey; + if (relationship != null) { + EOJoin parentChildJoin = ERXArrayUtilities.firstObject(relationship.joins()); + destEntityForeignKey = "." + expression.sqlStringForSchemaObjectName(parentChildJoin.destinationAttribute().columnName()); + } else { + EOAttribute pk = srcEntity.primaryKeyAttributes().lastObject(); + destEntityForeignKey = "." + expression.sqlStringForSchemaObjectName(pk.columnName()); + } EOQualifier qual = EOQualifierSQLGeneration.Support._schemaBasedQualifierWithRootEntity(subqualifier, destEntity); EOFetchSpecification fetchSpecification = new EOFetchSpecification(destEntity.name(), qual, null, false, true, null);