Just committed basic scalar API:

int c = SQLSelect.scalarQuery(Integer.class, "")
          .append("SELECT COUNT(*) FROM ARTIST")
          .selectOne(context);

List<Long> ids = SQLSelect.scalarQuery(Long.class, "SELECT ARTIST_ID FROM 
ARTIST ORDER BY ARTIST_ID").select(context);

and documented the remaining enhancements per CAY-1830.

Andrus

On May 25, 2013, at 1:39 PM, Andrus Adamchik <and...@objectstyle.org> wrote:

> 
> On May 25, 2013, at 10:33 AM, Aristedes Maniatis <a...@maniatis.org> wrote:
> 
> 
>> however I am confused by columnNameCaps(). This seems to be something you'd 
>> want to set in the data model rather than per query. Or could Cayenne just 
>> perform a case insensitive match to the db model and then adjust the case as 
>> needed, all without specifying anything.
> 
> Guessing it in Cayenne would be ideal. The feature itself dates back to 
> SQLTemplate, but the new API is all about making things easier. The goal of 
> this feat is to be able to convert DataRow to object, so we presumably know 
> the entity involved and can make a good guess.
> 
>> Also, does it make sense to allow the bindings within the query method as an 
>> option:
>> 
>>   SQLSelect.query(Artist.class, "SELECT * FROM Artists WHERE name = $name", 
>> "name", "fred")
>> 
>> That's a bit like printf style calls (although it references replacements by 
>> position rather than name).
> 
> Yeah, I'd say we should start supporting positional parameters (and we do in 
> EJBQL, but not in SQLTemplate or Expression). Then it will work with a vararg 
> method.
> 
> 
>> Would it be possible to write aggregate queries:
>> 
>>   int count = SQLSelect.scalar(Artist.class, "SELECT COUNT(*) FROM Artists 
>> WHERE name = $name").bind("name", "fred").value()
> 
> Good idea. It should be easy to do.
> 
> Andrus
> 
> 

Reply via email to