cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hugi Thordarson <h...@karlmenn.is>
Subject Re: likeIgnoreCase queries and EJBQL
Date Tue, 13 Oct 2015 09:31:51 GMT
Thanks Mike!

I’m not sure it this is a database plugin problem though. Doing regular case insensitive
queries works fine, it’s only queries created from EJBQL that fail. Also, the only place
in the Cayenne sources I can find a mention of “ucase" is in EJBQLTranslator’s visitUpper().
Perhaps changing that method to do upper( rather than {fn ucase. might solve the problem?
I’m going to try that out :).

https://github.com/apache/cayenne/blob/master/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLConditionTranslator.java#L1058

Cheers,
- hugi




> Sounds like the DbAdaptor for that database needs to be special-cased.
> Lots of examples of how this is done in cayenne/dba/<database>/*,
> especially for oracle
> 
> And it's pretty simple to set your app up to use a custom version of
> the dbAdaptor if you don't want to build your own custom version of
> cayenne while you wait until it's included in a release.
> 
> On Mon, Oct 12, 2015 at 12:46 PM, Hugi Thordarson <hugi@karlmenn.is> wrote:
>> Hi all.
>> 
>> I’m communicating with a database that doesn’t have the UCASE function, only
UPPER.
>> 
>> When I use case insensitive expressions (for example, User.NAME.likeIgnoreCase(“Bob”))
in a regular SelectQuery, Cayenne generates SQL using the “UPPER” function (for expressions
generated using likeIgnoreCase). This works fine.
>> 
>> But if I generate EJBQL from the expression and then use the resulting string to
perform an EJBQLQuery, Cayenne will attempt to use UCASE function in the resulting SQL and
things go awry.
>> 
>> Can I tell the EJBQL SQL translator to use “upper” rather than “ucase” when
performing these queries?
>> 
>> Cheers,
>> - hugi


Mime
View raw message