Oh yeah, and as Mike pointed out you should call
query.setFetchingDataRows(true);
To tell Cayenne that the fetch result shouldn't be converted to DataObjects.
Andrus
> 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:13:10 EDT