Added check for target entity and return the entity's type instead
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpql/spi/JpaMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpql/spi/JpaMapping.java
index d94b675..583e353 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpql/spi/JpaMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpql/spi/JpaMapping.java
@@ -23,8 +23,10 @@
import org.eclipse.jpt.jpa.core.MappingKeys;
import org.eclipse.jpt.jpa.core.context.AttributeMapping;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
import org.eclipse.jpt.jpa.core.jpa2.MappingKeys2_0;
+import org.eclipse.persistence.jpa.jpql.spi.IEntity;
import org.eclipse.persistence.jpa.jpql.spi.IManagedType;
import org.eclipse.persistence.jpa.jpql.spi.IMapping;
import org.eclipse.persistence.jpa.jpql.spi.IType;
@@ -118,6 +120,19 @@
return getTypeRepository().getTypeHelper().unknownType();
}
+ // For relationship mapping, make sure to check the target entity first
+ if (isRelationship()) {
+
+ String entityName = ((RelationshipMapping) mapping).getTargetEntity();
+
+ if (StringTools.stringIsNotEmpty(entityName)) {
+ IEntity entity = getParent().getProvider().getEntityNamed(entityName);
+ if (entity != null) {
+ return entity.getType();
+ }
+ }
+ }
+
return getTypeRepository().getType(typeName);
}
@@ -229,7 +244,6 @@
*/
public int getMappingType() {
if (mappingType == -1) {
- getTypeDeclaration();
mappingType = calculateMappingType();
}
return mappingType;