You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Andrey (JIRA)" <ji...@apache.org> on 2014/07/09 10:22:04 UTC

[jira] [Created] (CAY-1940) NullPointerException when try to Prefetch

Andrey created CAY-1940:
---------------------------

             Summary: NullPointerException when try to Prefetch
                 Key: CAY-1940
                 URL: https://issues.apache.org/jira/browse/CAY-1940
             Project: Cayenne
          Issue Type: Bug
          Components: Core Library, Database integration
    Affects Versions: 3.2M1
         Environment: Ubuntu 14.04lts, Java 1.7, Mysql 5.5.37
            Reporter: Andrey


Use case description:

Cayenne model:

Tables:
	Contact
		id -primary key
		name - string
	Course
		id - primary key 
		name - string 
	Relation
		id - primary key
		entityIdentifier - entity name of related object
		entityId - id of related object
		ruleId - id of rule	
	Rule
		id - primary key
		name - string

Classes:
	Contact
		properties: id, name
		relations: List< ContactRuleRelation> ruleRelations

	Course
		properties: id, name
		relations: List< CourseRuleRelation > ruleRelations

	RuleRelation		
		properties: id, entityIdentifier 
		relations: rule
 
	ContactRuleRelation extends  RuleRelation
		(entityIdentifier = 'Contact')

	CourseRuleRelation extends  RuleRelation
		(entityIdentifier = 'Course')

	Rule
		properties: id, name	


Data in the database:
	Contact:  id=1, name=Contact1
	Course: id=1, name=Course1
	Relation: id=1, objectIdentifier=Course, objectID=1, ruleId=1
	Rule: id=1, name=Rule1	

SelectQuery:
	select Contact by id = 1 and add prefetch relations.rule

As result the exception:

java.lang.NullPointerException
    at org.apache.cayenne.access.ResultScanParentAttachmentStrategy.indexParents(ResultScanParentAttachmentStrategy.java:104)
    at org.apache.cayenne.access.ResultScanParentAttachmentStrategy.linkToParent(ResultScanParentAttachmentStrategy.java:72)
    at org.apache.cayenne.access.HierarchicalObjectResolverNode.objectsFromDataRows(HierarchicalObjectResolverNode.java:70)
    at org.apache.cayenne.access.HierarchicalObjectResolver$DisjointProcessor.startDisjointPrefetch(HierarchicalObjectResolver.java:121)
    at org.apache.cayenne.query.PrefetchTreeNode.traverse(PrefetchTreeNode.java:206)
    at org.apache.cayenne.query.PrefetchTreeNode.traverse(PrefetchTreeNode.java:221)
    at org.apache.cayenne.query.PrefetchTreeNode.traverse(PrefetchTreeNode.java:221)
    at org.apache.cayenne.access.HierarchicalObjectResolver.resolveObjectTree(HierarchicalObjectResolver.java:96)
    at org.apache.cayenne.access.HierarchicalObjectResolver.synchronizedRootResultNodeFromDataRows(HierarchicalObjectResolver.java:78)
    at org.apache.cayenne.access.DataDomainQueryAction$ObjectConversionStrategy.toResultsTree(DataDomainQueryAction.java:565)
    at org.apache.cayenne.access.DataDomainQueryAction$SingleObjectConversionStrategy.convert(DataDomainQueryAction.java:603)
    at org.apache.cayenne.access.DataDomainQueryAction.interceptObjectConversion(DataDomainQueryAction.java:459)
    at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:129)
    at org.apache.cayenne.access.DataDomain.onQueryNoFilters(DataDomain.java:605)
    at org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:838)


Looks like Cayenne considers only entityId without entityIdentifier when try to load the prefetch.



--
This message was sent by Atlassian JIRA
(v6.2#6252)