I looked at our existing junit tests and it looks like we're testing a
single level of fetching.  That is, if b <-> orders was 1:n instead of 1:1,
then you could do the "JOIN FETCH b.orders".  It looks like we have tested
that processing.  But, not going multiple levels...

If I look at the spec (section 4.4.5.3), it states:

*The syntax for a fetch join is*

*fetch_join ::= [ LEFT [OUTER] | INNER ] JOIN FETCH
join_association_path_expression*

*The association referenced by the right side of the FETCH JOIN clause must
be an association or element*
*collection that is referenced from an entity or embeddable that is returned
as a result of the query.*

Since you result of this query is returning "b", and your JOIN FETCH is
attempting to access b.order.orderPositions, orderPositions are not directly
referenced by b.  The spec is not clear on whether the additional levels of
traversal are expected.

Any other insights from other readers?

Kevin

On Tue, Feb 22, 2011 at 2:27 PM, Kevin Sutter <[email protected]> wrote:

> Hmmm...  It's my understanding that a JOIN FETCH should preload the
> relationship, even if it's marked as being Lazy.  Have you performed a SQL
> trace to see if we're even attempting to load the relationship?  Unless
> someone else speaks up, this would seem to be a bug.
>
> Kevin
>
>
> On Tue, Feb 22, 2011 at 12:08 PM, Marc Logemann <[email protected]> wrote:
>
>> Hi,
>>
>> assume this code:
>>
>>        Query query = getEntityManager().createQuery("SELECT b FROM Box b
>> JOIN FETCH b.order.orderPositions WHERE b.id = ?1");
>>        query.setParameter(1, boxId);
>>        List<Box> boxList = query.getResultList();
>>
>> The relationship is:
>>
>> box  <-- 1:1 ---> order <-- 1:n --> orderPositions
>>
>> When doing this query, i would expect that the orderPositions are attached
>> but they are null (order is attached to the box as expected but thats 1:1) .
>> I checked this right after the query.getResultList() call.
>> What am i missing here?
>>
>> thanks for infos.
>>
>> ---
>> regards
>> Marc Logemann
>> http://www.logemann.org
>> http://www.logentis.de
>>
>>
>>
>>
>>
>

Reply via email to