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