Re: questions

From: Kevin Menard (kmenar..ervprise.com)
Date: Wed Feb 13 2008 - 14:26:26 EST

  • Next message: Eric Polino: "Re: questions"

    On 2/13/08 2:04 PM, "Eric Polino" <aluin..mail.com> wrote:

    >>> 2. I've read in many places how Cayenne deals with joins for you, but
    >>> nowhere do I see an example of how its done. Here's an example
    >>> problem I'm dealing with.
    >>>
    >>> Schema:
    >>>
    >>> Reservation (n to 1) Site
    >>> Site (n to 1)
    >>> Site contains a type field
    >>>
    >>> I want to get all the Reservations of a given for a given type of
    >>> site. In sql I would execute something like, "select * from
    >>> Reservation, Site, SiteType where SiteType.Name='Something' and
    >>> Site.typeID = SiteType.id and Reservation.siteID = Site.id"
    >>>
    >>> Short of writing an parameterized sql string and executing that in my
    >>> code, how do I do that with Cayenne? I hope I explained all that well
    >>> enough...make sense?
    >>
    >> Just map the relationships in the modeler. Cayenne takes care of the SQL
    >> for you. The following guide should help you get started with the modeler:
    >>
    >> http://cayenne.apache.org/doc20/tutorial-starting-mapping-project.html
    >
    > I've been using the modeler and the relationships are setup, I just
    > don't know how to do queries based on those relationship...ie the one
    > mentioned above

    Sorry. I glossed over the original question.

    You want to use a qualifier expression:

    http://cayenne.apache.org/doc/qualifier-expressions.html

    Expression factory is the easiest way to do this:

    http://cayenne.apache.org/doc/api/org/apache/cayenne/exp/ExpressionFactory.h
    tml

    So, you may have something like:

    Query q = new SelectQuery(Site.class,
    ExpressionFactory.matchDbExp(Site.NAME, "Something");

    List<Site> sites = context.performQuery(q);

    for (Site s :sites)
    {
        System.out.println(s.getReservation().toString();
    }

    You'll have to make substitutions as appropriate for your actual code.

    --
    Kevin



    This archive was generated by hypermail 2.0.0 : Wed Feb 13 2008 - 14:27:04 EST