On 2/13/08 2:04 PM, "Eric Polino" <[EMAIL PROTECTED]> 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

Reply via email to