Re: Aggregate in a Qualifier

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Tue Feb 15 2005 - 07:23:32 EST

  • Next message: Koen Segers: "Re: unittesting"

    I guess support for such qualifiers would be a nice thing to have.
    Improving aggregated data handling is definitely on the list.

    However SQLTemplate (especially mapped in the Modeler) is a very simple
    and powerful alternative. Of course you don't have to hardcode the schema.
    You can make it a SQLTemplate parameter. E.g.:

    SELECT... FROM $schema.MY_TABLE1 t1, $schema.MY_TABLE2 t2 ...

    So "schema" becomes one of the dynamic template parameters. To find the
    schema in the code you need to get a hold of one of the DbEntities that
    uses schema in question:

       DbEntity entity =
          dataContext.getEntityResolver().lookupDbEntity(Maildata.class);

    from here you can either do this:

       String schema = entity.getSchema();

    or get a default schema for the whole DataMap (if you set one):

       String schema = entity.getDataMap().getDefaultSchema();

    Andrus

    > I was hoping the following would be possible in Cayenne...
    >
    > Expression where = Expression.fromString(Maildata.WHEN_SENT_PROPERTY + "
    > is null and " + Maildata.MAIL_ACTIONS_ARRAY_PROPERTY + ".size < 4 ");
    > SelectQuery query = new SelectQuery(Maildata.class);
    > query.setQualifier(where);
    >
    > After ruunning my first test is was obvious that this is not possible
    > :-)
    >
    > I was trying to avoid using the SQLTemplate due to the fact that I don't
    > want to hard code the schema name for the tables in the java code.
    >
    > 1. Is there any way to do something like a COUNT on a relationship in
    > the Qualifier for a query?
    >
    > 2. If no on 1 then is there a way I can get the schema name from the
    > mappings? And perhaps how?
    >
    > Thanks in advance,
    >
    > Joshua T. Pyle
    > Go has always existed.



    This archive was generated by hypermail 2.0.0 : Tue Feb 15 2005 - 07:23:35 EST