[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.rt.eclipselink] Re: Dynamic fetch plan with navigations
|
- From: fs5@xxxxxxx (Frank Schwarz)
- Date: Mon, 11 Aug 2008 15:38:35 +0000 (UTC)
- Newsgroups: eclipse.rt.eclipselink
- Organization: Eclipse
- User-agent: NewsPortal/0.36 (http://florian-amrhein.de/newsportal)
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