Hi Andrus;
Thanks for the suggestion. I did try that with this;
SELECT u FROM FooBar u OUTER JOIN u.someToMany c WHERE u.userType = :userType ORDER BY u.username
I get the following exception;
Caused by: org.apache.cayenne.ejbql.parser.ParseException: Encountered " "OUTER" "OUTER "" at line 1, column 25.
Was expecting one of:
<EOF>
"," ...
"ORDER" ...
"WHERE" ...
"GROUP" ...
"HAVING" ...
"LEFT" ...
"INNER" ...
"JOIN" ...
at org.apache.cayenne.ejbql.parser.EJBQL.generateParseException(EJBQL.java:9419)
at org.apache.cayenne.ejbql.parser.EJBQL.jj_consume_token(EJBQL.java:9298)
I also tried a LEFT JOIN which I think would do what I want and it certainly picks up the rows as I would anticipate from the SQL log, but the to-many doesn't seem to freshen.
cheers.
> IIRC there's also an OUTER fetch join that handles this case.
...
>>> yeah, you can use fetch joins (since 3.0). something like
>>> select f FROM FooBar f inner join fetch f.bars b ...
...
>> I tried that and it produces a query which excludes objects from the result-set where there is nothing in the join. The behaviour of "query.addPrefetch(..)" would be to run two SELECT database queries to get the additional data and freshen-up the relationship if my thinking is correct.
___
Andrew Lindesay
www.silvereye.co.nz
This archive was generated by hypermail 2.0.0 : Thu May 06 2010 - 06:03:08 EDT