Derek,
this might actually be a bug. Let me investigate this some more...
Andrus
> I have a Party superclass and Person/Organisation sub classes. I have
> relationships set up at both levels. If I create a query based on person
> and prefetch a Person specific relationship, then I get two selects -
> one for the person(s) and one for the relationship for those person(s).
> All is well :-)
>
> However, if I prefetch one of the Party relationships (regardless of it
> being a Party or Person based query), then I get more than two selects -
> one for the person(s), one for the relationship for those person(s),
> and then one for each party related to a relationship (fetching the
> "Party" object by its id). It looks like that if I use a party
> relationship, then it executes a search for every distinct "toParty"
> link pointing back from the relationship record(s) to party. Is this is
> a bug or a feature? I would rather not have to push all my relationships
> to the leaf classes if I can help it.
>
> Thanks
>
> Derek
>
> BTW: environment is RC1, Win XP and DB2 8.1
>
> Here is a summary of the output:
> INFO QueryLogger: SELECT DISTINCT t0.SURNAME_UPPER, t0.FIRST_NAME_UPPER,
> t0.PARTY_ID FROM DBA.PARTY t0 WHERE t0.SURNAME_UPPER LIKE CAST (? AS
> VARCHAR(100)) [bind: 'ABC%'] - prepared in 10 ms.
>
> INFO QueryLogger: === returned 4 rows. - took 171 ms.
>
> INFO QueryLogger: SELECT t0.BALANCE, t0.PARTY_REL_ID, t0.PARTY_ID FROM
> DBA.PARTYREL t0, DBA.PARTY t1 WHERE t0.PARTY_ID = t1.PARTY_ID AND
> (t1.SURNAME_UPPER LIKE CAST (? AS VARCHAR(100))) [bind: 'ABC%']
>
> INFO QueryLogger: === returned 4 rows. - took 30 ms.
>
> INFO QueryLogger: +++ transaction committed.
>
> INFO QueryLogger: --- will run 1 query.
>
> INFO QueryLogger: --- transaction started.
>
> INFO QueryLogger: SELECT t0.SURNAME_UPPER, t0.FIRST_NAME_UPPER,
> t0.PARTY_ID FROM DBA.PARTY t0 WHERE t0.PARTY_ID = ? [bind: 787391]
>
> INFO QueryLogger: === returned 1 row. - took 40 ms.
>
> INFO QueryLogger: +++ transaction committed.
>
> INFO QueryLogger: --- will run 1 query.
>
> INFO QueryLogger: --- transaction started.
>
> INFO QueryLogger: SELECT t0.SURNAME_UPPER, t0.FIRST_NAME_UPPER,
> t0.PARTY_ID FROM DBA.PARTY t0 WHERE t0.PARTY_ID = ? [bind: 787421]
>
> INFO QueryLogger: === returned 1 row. - took 30 ms.
>
> INFO QueryLogger: +++ transaction committed.
>
> INFO QueryLogger: --- will run 1 query.
>
> INFO QueryLogger: --- transaction started.
>
> INFO QueryLogger: t0.SURNAME_UPPER, t0.FIRST_NAME_UPPER, t0.PARTY_ID
> FROM DBA.PARTY t0 WHERE t0.PARTY_ID = ? [bind: 787402]
This archive was generated by hypermail 2.0.0 : Thu Oct 21 2004 - 13:01:06 EDT