Just checked this in to 3.0 branch (with Modeler support):
    https://issues.apache.org/cayenne/browse/CAY-800
so you'll be able to do this for instance:
    sqlTemplate.setColumnNamesCapitalization 
(SQLTemplate.UPPERCASE_COLUMN_NAMES)
Andrus
On Jun 5, 2007, at 2:38 PM, Andrus Adamchik wrote:
> Yeah, capitalization mismatch between the default DB behavior and  
> your mapping can bite you when you use "select *". You may have to  
> use the "#result" directive to describe all your columns:
>
>    http://cayenne.apache.org/doc/scripting-sqltemplate.html
>
>
> Since this is a pretty common and annoying problem (and presuming  
> that most users do follow some naming convention in mapping their  
> case-insensitive DB), I wonder if we should add a simple fix - two  
> methods in a SQLTemplate - "setUppercaseColumnNames",  
> "setLowercaseColumnNames"? Anybody has thoughts on that? Or is  
> there some JDBC way to achieve the same with "SELECT *" queries?
>
> Andrus
>
> On Jun 5, 2007, at 8:33 AM, Marcin Skladaniec wrote:
>
>> Hi everyone
>>
>> I'm having some troubles with SQLTemplate. The one I use is fairly  
>> simple:
>>
>> SQLTemplate query = new SQLTemplate(Student.class, "select * from  
>> Student WHERE isDeleted = 1");
>>
>> the student entity is defined by :
>>
>> 	<db-entity name="Student">
>> 		<db-attribute name="studentNumber" type="BIGINT"/>
>> ... some other fields here ...
>> 		<db-attribute name="id" type="INTEGER" isPrimaryKey="true"  
>> isMandatory="true"/>
>> 	</db-entity>
>>
>> 	<obj-entity name="Student"  
>> className="ish.oncourse.server.cayenne.Student"  
>> dbEntityName="Student"  
>> superClassName="ish.oncourse.server.cayenne.glue.CayenneDataObject" >
>> 		<qualifier><![CDATA[(isDeleted = null) or (isDeleted = 0)]]></ 
>> qualifier>
>> 		<obj-attribute name="studentNumber" type="java.lang.Long" db- 
>> attribute-path="studentNumber"/>
>> ... some other fields here ...
>> 		<obj-attribute name="id" type="java.lang.Integer" db-attribute- 
>> path="id"/>
>> 	</obj-entity>
>>
>> When the query is performed an exception is raised:
>>
>>  [java] org.apache.cayenne.CayenneRuntimeException: [v.$ 
>> {project.version} ${project.build.date} ${project.build.time}]  
>> Null value for 'id'. Snapshot: org.apache.cayenne.DataRo..549af 
>> [values={STUDENTNUMBER=5, (Other fields in here, all in upper  
>> case), ID=241}, version=-9223372036854775761,  
>> replaces=-9223372036854775808]. Prefix: null
>> [java]     at  
>> org.apache.cayenne.access.ObjectResolver.createObjectId 
>> (ObjectResolver.java:280)
>>      [java]     at  
>> org.apache.cayenne.access.ObjectResolver.objectFromDataRow 
>> (ObjectResolver.java:206)
>>      [java]     at  
>> org.apache.cayenne.access.ObjectResolver.objectsFromDataRows 
>> (ObjectResolver.java:120)
>>      [java]     at  
>> org.apache.cayenne.access.ObjectResolver.synchronizedObjectsFromDataR 
>> ows(ObjectResolver.java:100)
>>      [java]     at  
>> org.apache.cayenne.access.DataDomainQueryAction.interceptObjectConver 
>> sion(DataDomainQueryAction.java:433)
>>      [java]     at  
>> org.apache.cayenne.access.DataDomainQueryAction.execute 
>> (DataDomainQueryAction.java:124)
>>      [java]     at org.apache.cayenne.access.DataDomain.onQuery 
>> (DataDomain.java:722)
>>      [java]     at  
>> org.apache.cayenne.intercept.DataChannelCallbackInterceptor.onQuery 
>> (DataChannelCallbackInterceptor.java:74)
>>      [java]     at  
>> org.apache.cayenne.util.ObjectContextQueryAction.runQuery 
>> (ObjectContextQueryAction.java:282)
>>      [java]     at  
>> org.apache.cayenne.access.DataContextQueryAction.execute 
>> (DataContextQueryAction.java:59)
>>      [java]     at org.apache.cayenne.access.DataContext.onQuery 
>> (DataContext.java:1321)
>>      [java]     at  
>> org.apache.cayenne.access.DataContext.performQuery 
>> (DataContext.java:1310)
>>      [java]     at  
>> org.apache.cayenne.intercept.ObjectContextDecorator.performQuery 
>> (ObjectContextDecorator.java:98)
>>      [java]     at  
>> ish.oncourse.server.services.DataPopulationService.runService 
>> (DataPopulationService.java:688)
>>      [java]     at ish.oncourse.server.services.Service.run 
>> (Service.java:174)
>>      [java]     at java.lang.Thread.run(Thread.java:613)
>>
>> What is wrong ? Why when all my field properties are set to  
>> lowercase (like "id") the SQLTemplate returns a DataRow with only  
>> capital letters ?
>>
>>
>> I have to use the SQLTemplate since my model defines a qualifier  
>> "<qualifier><![CDATA[(isDeleted = null) or (isDeleted = 0)]]></ 
>> qualifier>" and I actually want to fetch the records with  
>> isDeleted=1. I tried different ways to waive the constraint on the  
>> data like:
>>
>> ObjEntity studentEntity = new ObjEntity 
>> ("ish.oncourse.server.cayenne.Student");
>> Expression exp = studentEntity.getDeclaredQualifier();
>> studentEntity.setDeclaredQualifier(null);
>> SelectQuery selectQuery = new SelectQuery(studentEntity);
>> studentEntity.setDeclaredQualifier(exp);
>>
>> but nothing worked. Did someone achieve it ?
>>
>> Thanks
>> Marcin
>> -------------------------->
>> ish
>> http://www.ish.com.au
>> Level 1, 30 Wilson Street Newtown 2042 Australia
>> phone +61 2 9550 5001   fax +61 2 9550 4001
>>
>>
>>
>>
>>
>
>
This archive was generated by hypermail 2.0.0 : Fri Jun 08 2007 - 16:59:49 EDT