Re: Record counts...

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Tue Jun 14 2005 - 17:03:15 EDT

  • Next message: Mike Kienenberger: "Re: Record counts..."

    No, SQLTemplate is actually used to run arbitrary SQL. In some cases the
    result can be mapped to an entity, but in most it will be just that - a
    list of Map objects with each Map corresponding to a result set data. So a
    count query would look like this:

      String sql = "SELECT COUNT(*) FROM SOME_TABLE"
      DataMap queryRoot =
    context.getEntityResolver().getDataMap("data_map_name");
      SQLTemplate query = new SQLTemaplate(queryRoot, sql, true);
      Map singleRow = (Map) context.performQuery(query).get(0);
      Number count = (Number) singleRow.values().next();

    As this is a bit too verbose, 1.2 will likely encapsulate this code in a
    generic utility class. For now you can create your own.

    Andrus

    > I read through that documentation, but it doesn't really appear to do
    > anything different then the normal SelectQuery besdies being able to
    > write it in SQL. I was wanting to do something like SELECT COUNT(*)
    > FROM Object and just got the int result, with out loading all the
    > child records etc.
    >
    > Just reading the docs there it doesn't appear to let me do something like
    > that.
    >
    > -Nick
    >
    > On 6/14/05, Mike Kienenberger <mkienen..laska.net> wrote:
    >> Nick Stuart <nicholas.stuar..mail.com> wrote:
    >> > This should be an easy one. I basically just want to find out how many
    >> > objects of a certain type there are. Easy to do with a SelectQuery and
    >> > user List.size() but does the cause any kind of performance issues?
    >> > Just thinking if these objects have child objects, which has more
    >> > child objects, will it pull all those when I Select the parent?
    >>
    >> If you only want the count and don't want to load any objects, just use
    >> SQLTemplate.
    >>
    >> http://www.objectstyle.org/cayenne/userguide/fetch/sqltemplate.html
    >>
    >



    This archive was generated by hypermail 2.0.0 : Tue Jun 14 2005 - 17:03:16 EDT