True, just supplying a select list and class would easier.
new SQLTemplate(MyTable.class, "select max(myColumn)", true);
It's hard to say why it was done this way. Maybe Andrus can offer a
better explanation when he's online. Or you can look at the source if
you are really interested.
e.
On Jul 30, 2004, at 1:34 PM, Gentry, Michael wrote:
> 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 - 14:10:54 EDT