Re: Sorting and Pagination in Many-to-Many relationship

From: Michael Gentry (mgentr..asslight.net)
Date: Mon Sep 14 2009 - 10:53:20 EDT

  • Next message: Arnaud Garcia: "Re: getThreadObjectContext with domain parameter - code -"

    Hi Nishant,

    First off, unless your Subscription Type is rather dynamic, you might
    want to consider using an enum for it (especially if you are using
    3.0):

    http://cayenne.apache.org/doc/modeling-enumerations.html

    Next, it sounds like what you are wanting is a list of magazines for a
    given user. Instead of starting at the user, you could start at the
    magazines and put the sort order on it. You essentially want to:
    fetch magazines where subscriptions.readers.rname = your_reader order
    by mname.

    In Cayenne, it would be more like (and I'm guessing at your
    relationship/attribute names):

    Expression exp = Expression.fromString("subscriptions.readers.rname = $reader");
    Map param = new HashMap(1);
    param.put("reader", "reader's name");
    SelectQuery query = new SelectQuery(Magazine.class,
    exp.expWithParameters(param));
    Ordering order = new Ordering(Magazine.MNAME_PROPERTY, true);
    query.addOrdering(order);
    List<Magazine> magazines = dataContext.performQuery(query);

    mrg

    On Sun, Sep 13, 2009 at 4:55 AM, Nishant Neeraj <nneeraj12..ahoo.com> wrote:
    > I am having problem in sorting and paginating  many to many relationship objects.
    > Here is the DB relationship model.  http://i30.tinypic.com/jaz4wm.jpgI want to do Readers.getMagzines() that returns paginated resultset of page size, N.
    >
    > I write a Readers.getMagzine() Method that pulls out List of subscriptions. In the method, I iterate through the list and inflating Magzines (subscriptions.getMagzines()) and injecting SubscriptionType to magzine object. And then I return the list. This works fine.
    > Now, I do not want to pull out the full list. Rather, I want do it page by page sort by say, MagzineName with page Size N. Not sure how to do it. Can some one give a hint?
    > ThanksNishant
    >
    >
    >      Love Cricket? Check out live scores, photos, video highlights and more. Click here http://cricket.yahoo.com



    This archive was generated by hypermail 2.0.0 : Mon Sep 14 2009 - 10:53:57 EDT