Re: Order By Expression

From: Dave Dombrosky (dombr..mail.com)
Date: Tue Mar 16 2010 - 13:33:01 EDT

  • Next message: Michael Gentry: "Re: Order By Expression"

    Yes I'm using Cayenne 3. I'm not sure if I stated the problem in
    enough detail, because it seems like you guys are confused. Or maybe
    I just don't understand how to use what you are telling me about.

    Maybe it would be better if I was helped with a full example. Using
    the Artist class from Cayenne's test schema, how would I go about
    creating a SelectQuery to order all artists with the name "Tom" first?
     Basically to generate a query similar to this:

    SELECT * FROM artist ORDER BY artist_name = 'Tom' DESC;

    Would it be like this?

    SelectQuery query = new SelectQuery(Artist.class);
    query.addOrdering("artistName = 'Tom'", SortOrder.DESCENDING);
    context.performQuery(query);

    Because that still gets the error Unsupported ordering expression:
    artistName = 'Tom'.

    Am I doing something wrong, or is this impossible with a SelectQuery?
    I'd rather not use SQLTemplate if I can avoid it.

    -Dave

    On Tue, Mar 16, 2010 at 8:39 AM, Michael Gentry <mgentr..asslight.net> wrote:
    > Hi Dave,
    >
    > Since you are seeing deprecation warnings I'm assuming you are using
    > Cayenne 3?  If so, you should use:
    >
    > addOrdering(Ordering ordering) or
    > addOrdering(String sortPathSpec, SortOrder order)
    >
    > These are defined for your SelectQuery object.  Of course, if you are
    > using the first of those methods, you'll have to create your own
    > Ordering object first.  The second creates one for you behind the
    > scenes.
    >
    > Let me know if you need additional pointers!
    >
    > mrg
    >
    >
    > On Tue, Mar 16, 2010 at 1:11 AM, Dave Dombrosky <dombr..mail.com> wrote:
    >> Is there any way to use sort expressions in a query?  Something like
    >> "ORDER BY column = id"?  I get the error "Unsupported ordering
    >> expression" when trying to execute a query with this in it.
    >>
    >> Also, it looks like I might be able to do this using in-memory
    >> sorting, but the Ordering(Expression sortExpression, ...) methods are
    >> deprecated.  So what's the preferred way to sort on expressions in
    >> Cayenne?
    >>
    >> -Dave
    >>
    >



    This archive was generated by hypermail 2.0.0 : Tue Mar 16 2010 - 13:35:00 EDT