Re: ClassCastException ...ToManyList cannot be cast to ...Persistent

From: Robert Zeigler (robert.zeigle..mail.com)
Date: Tue Mar 17 2009 - 17:18:26 EDT

  • Next message: mr.abanjo: "Extract large data from database"

    Hm.

    Never tried it, but, could you define two /obj/ relationships?
    One flattened and one not?

    Robert

    On Mar 17, 2009, at 3/174:16 PM , Mike Kienenberger wrote:

    > Yes, but as far as I know, Dan cannot flatten the relationship list
    > without losing access to the other information contained in the join
    > table.
    >
    > I have had the same issue, and as far as I know, you have to live
    > without flattened relationships in this case.
    >
    > On Tue, Mar 17, 2009 at 2:34 PM, Andrey Razumovsky
    > <razumovsky.andre..mail.com> wrote:
    >> Dan,
    >>
    >> As far as I know, Cayenne *should* allow that prefetch and there
    >> should be
    >> less than N+1 select. Is there any exception now? You'd likely want
    >> to check
    >> prefetch docs [1] to see that your query isn't under limitation
    >> described
    >> there.
    >>
    >> About flattened relationships, these ones only affect object layer,
    >> not
    >> database layer. So all DB structure will remain untouched. Have a
    >> look at
    >> many-to-many modeling article [2]! It's a bit out of date
    >> (ObjRelationship
    >> mapping dialog has changed recently and became more user-friendly),
    >> but
    >> you'll get the point!
    >>
    >> Andrey
    >>
    >> [1] http://cayenne.apache.org/doc/prefetching.html
    >> [2] http://cayenne.apache.org/doc/many-to-many-relationships.html
    >>
    >> 2009/3/17 Dan <daniel.can..mail.com>
    >>
    >>> Andrey Razumovsky <razumovsky.andrey <at> gmail.com> writes:
    >>>
    >>>>
    >>>> Hi Dan!
    >>>>
    >>>> It seems quite strange to me that relationship from
    >>>> PARTY_CASE_LINK to
    >>> PARTY
    >>>> is called "parties". So seems it's to-many. But PARTY_CASE_LINK has
    >>>> "partyid", so no more than one PARTY can exist for PARTY_CASE_LINK.
    >>>> Also can't flattened relationships [1] be useful for you in this
    >>>> case?
    >>>>
    >>>> [1] http://cayenne.apache.org/doc/flattened-relationships.html
    >>>>
    >>>> Andrey
    >>>>
    >>>
    >>> Andrey,
    >>>
    >>> Ahh - yes - there was a flaw in the data model - the relationships
    >>> to the
    >>> PARTY_CASE_LINK table should be toMany, but all of the reverse
    >>> relationships
    >>> should be toOne.
    >>>
    >>> So i now have relationships that allow me to get
    >>>
    >>> List<PartyCaseLink> casesLinks = pty.getPartyCases();
    >>> for (PartyCaseLink caseLink : casesLinks)
    >>> {
    >>> CourtCase cases = caseLink.getCase();
    >>> ... do stuff
    >>> }
    >>>
    >>> That is now resolved, and I can get "half" way to the objects that
    >>> I want
    >>> without additional DB queries using:
    >>>
    >>> selectQuery.addPrefetch("partyCases");
    >>>
    >>> BUT -- i see that cayenne is not allowing me to addPrefetch all
    >>> the way to
    >>> the
    >>> "case" -- e.g. i want to:
    >>>
    >>> selectQuery.addPrefetch("partyCases.case");
    >>>
    >>> to avoid going back to the database N times (1 per row).
    >>>
    >>> ...
    >>>
    >>> Also - flattened relationships look interesting, but since I have
    >>> a "real"
    >>> relationship in the database there already, shouldn't i be able to
    >>> use
    >>> that?
    >>>
    >>> Thanks again in advance.
    >>>
    >>> dan
    >>>
    >>>
    >>



    This archive was generated by hypermail 2.0.0 : Tue Mar 17 2009 - 17:19:07 EDT