[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.rt.eclipselink] Re: Dynamic fetch plan with navigations

What SQL did you get from using the hint?

Unfortunately, I cannot reproduce the observed behavior. It was like pre-fetching the first relationship and later fetching on-demand the nested relationship.


Now I am seeing an exception with the cascading query hint.
Object model: Person with self-reference "friends" as many-to-many
Query:
Query query = entityManager.createQuery("SELECT p FROM Person p");
query.setHint("eclipselink.join-fetch", "p.friends.friends");

resulting SQL:

SELECT t2.ID, t2.FIRSTNAME, t2.LASTNAME, t0.ID, t0.FIRSTNAME, t0.LASTNAME FROM FRIEND t4, FRIEND t3, PERSON t2, PERSON t1, PERSON t0 WHERE (((t3.Person_ID = t2.ID) AND (t1.ID = t3.Friend_ID)) AND ((t4.Person_ID = t1.ID) AND (t0.ID = t4.Friend_ID)))

Exception:
Exception in thread "main" java.lang.NullPointerException
at org.eclipse.persistence.mappings.ForeignReferenceMapping.prepareNestedJoinQueryClone(ForeignReferenceMapping.java:1491)
at org.eclipse.persistence.mappings.CollectionMapping.valueFromRowInternalWithJoin(CollectionMapping.java:1560)
at org.eclipse.persistence.mappings.ForeignReferenceMapping.valueFromRow(ForeignReferenceMapping.java:1338)
at org.eclipse.persistence.mappings.ForeignReferenceMapping.buildCloneFromRow(ForeignReferenceMapping.java:171)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildAttributesIntoWorkingCopyClone(ObjectBuilder.java:1238)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildWorkingCopyCloneFromRow(ObjectBuilder.java:1355)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObjectInUnitOfWork(ObjectBuilder.java:513)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:461)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:413)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.buildObject(ObjectLevelReadQuery.java:521)
at org.eclipse.persistence.queries.ReadAllQuery.registerResultInUnitOfWork(ReadAllQuery.java:893)
at org.eclipse.persistence.queries.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:486)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:883)
at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:666)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:844)
at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:456)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:906)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2588)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1178)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1162)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1136)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1118)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeReadQuery(EJBQueryImpl.java:399)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getResultList(EJBQueryImpl.java:517)


The exception apart, the SQL statement should use left outer joins, shouldn't it?

-- Frank