cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nishant Neeraj <nishant.has.a.quest...@gmail.com>
Subject Re: querying vs using relationship list and iterate
Date Tue, 08 Jun 2010 15:11:51 GMT
Thanks Michael for the quick response.

I was wondering which one will be less costlier to do? A join query(#2), or
iterating over objects(#1)? And isn't iterating over objects need to pull
each object from database before they can be compared?

Thanks
Nishant

On Tue, Jun 8, 2010 at 8:25 PM, Michael Gentry <mgentry@masslight.net>wrote:

> #2 won't work the way you want.  It would need to be more along the lines
> of:
>
> user = $testUser and user.memberships.group = $group
>
>
> I've tended to use something closer to #1, but encapsulate it in my
> User.java class as something like:
>
> public boolean isInGroup(String groupName)
> {
>    for (Group g : getMemberships().getGroups())
>        if (groupName.equals(g.getName())
>            return true;
>    return false;
> }
>
> That's pseudocode and unlikely to work, but should give you the
> general idea.  You can then say:
>
> if (myUser.isInGroup(testGroupName)) {...}
>
>
> Thanks,
>
> mrg
>
>
> On Tue, Jun 8, 2010 at 10:41 AM, Nishant Neeraj
> <nishant.has.a.question@gmail.com> wrote:
> > Hi,
> >
> > I have three tables USERS, MEMBERSHIPS, GROUPS -- where membership is a
> > linking table that joins users and groups in many-to-many relationship,
> and
> > also stores users' role in the group.
> >
> > Sometime when I need to know whether a user exists in a group [or what
> role
> > a user has in a group], I can do it by two ways:
> >
> > 1. groups.getMembershipList() and iterate over the list inflating each
> > member and comparing with the User object that is on test. like
> >
> > for(Membership m: g.getMembershipList())
> > {
> >   if(m.getUser().equals(testUser)
> >       return true;
> > }
> >
> > Or.
> >
> > 2. I can just write a query using Expression.
> >
> > Expression.forString(Membership.class, "user = $testUser and
> group=$group");
> >
> >
> > Can someone suggest which one is better approach? Or, is there a even
> better
> > third approach?
> >
> > Thanks
> > Nishant
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message