Even if you setFetchingDataRows(true), you are still essentially
specifying the table name twice. For example:
template = new SQLTemplate(MyTable.class, "select max(myColumn) from
MyTable", true);
Instead of just:
template = new SQLTemplate(MyTable.class, "select max(myColumn)", true);
It seems to me that MyTable.class is already specifying the table, but
you have to specify it in the query, anyway. (I tried it in a little
testbed I have and it blows up if you leave the table name out of the
string.) I can understand the need to use MyTable.class (you need to
know which DB connection to use/etc, especially if accessing multiple
DBs simultaneously, etc), but I don't see why we'd need to specify the
table, since that information already exists.
/dev/mrg
-----Original Message-----
From: Eric Schneider [mailto:eri..entralparksoftware.com]
Sent: Friday, July 30, 2004 12:05 PM
To: Cayenne mailing list post
Subject: Re: Problems to execute(SELECT MAX).
/dev/mrg,
I'm think it's in the case when you're not setting
setFetchingDataRows(true) which is the default behavior.
It's much easier to construct DataObjects of a certain type with a
Class instead of paring your SQL string to derive it.
cheers,
e.
On Jul 30, 2004, at 11:55 AM, Gentry, Michael wrote:
> Maybe it's just me (too bad Andrus is on vacation right now), but if
> you
> are passing in the entity to the SQLTemplate constructor, why do you
> also need to include a "from" clause? Seems to me it should be able
to
> figure that out and could do it better than us developers (especially
> where the database is case sensitive, such as Sybase or the table name
> is different/confusing compared to the entity name). After all, that
> information has already been modeled.
>
> Am I missing something there or does anyone else find that strange?
>
> Thanks,
>
> /dev/mrg
>
>
> -----Original Message-----
> From: Tore Halset [mailto:halse..vv.ntnu.no]
> Sent: Friday, July 30, 2004 11:08 AM
> To: Cayenne mailing list post
> Subject: Re: Problems to execute(SELECT MAX).
>
>
> Hello
>
> String q = "select max(field) as max from table";
> SQLTemplate query = new SQLTemplate(Table.class, q,
> true);
> query.setFetchingDataRows(true);
> List result = dc.performQuery(query);
> Map row = (Map)result.get(0);
> log.info("max: " + row.get("max"));
>
> Take a look at aggregate-functions in cayenne examples as well:
> http://objectstyle.org/cayenne/examples/aggregate-functions/index.html
>
> Regards,
> - Tore.
>
>
> On Jul 30, 2004, at 15:52, Reinaldo Coelho Sartorelli wrote:
>
>> Regards, you have a example?
>>
>> I can't execute SELECT MAX with the SqlTemplate option and neither
> with
>> Expression as was suggested in the other email.
>>
>> Tks,
>> Reinaldo.
>>
>> On Friday 30 July 2004 03:08, Tore Halset wrote:
>>> On Jul 30, 2004, at 3:22, Reinaldo Coelho Sartorelli wrote:
>>>> All, who i can execute SELECT MAX from column, if "SqlSelectQuery"
> is
>>>> deprecated, and don't have MAX option ???
>>>
>>> Take a look at SQLTemplate. It has replaced SqlSelectQuery and has
>>> some
>>> nice features.
>>> http://www.objectstyle.org/cayenne/userguide/fetch/sqltemplate.html
>>>
>>> Does cayenne support using a attribute based on a function like min,
>>> max, sum, count and avg in the model? The attribute needs to be read
>>> only and should not be included when the table are created. I think
>>> this is supported by EOF. The argument to the function could be a
>>> path.
>>> E.g: The Company ObjEntity could have a attribute named maxSallery
>>> defined as max(employe.sallery).
>>>
>>> Regards,
>>> - Tore.
>
This archive was generated by hypermail 2.0.0 : Fri Jul 30 2004 - 13:34:59 EDT