Re: querying vs using relationship list and iterate

From: Michael Gentry (mgentr..asslight.net)
Date: Tue Jun 08 2010 - 14:55:23 UTC

  • Next message: Nishant Neeraj: "Re: querying vs using relationship list and iterate"

    #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.questio..mail.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
    >



    This archive was generated by hypermail 2.0.0 : Tue Jun 08 2010 - 15:01:24 UTC