Hi Jakob, Unfortunately, I don't have access to the source code constructing criteria. It was written for MS SQL Server, which is case-insensitive. Now the DB2 is used and its LIKE clause behaves differently. Deployer should be able to declaratively switch case-sensitivity.
Alexey. -----Original Message----- From: Jakob Braeuchi [mailto:[EMAIL PROTECTED] Sent: Thursday, August 28, 2003 7:02 PM To: OJB Users List Subject: Re: Customizing SQL generation hi alexey, why don't you use crit.addLike("upper(name)","ALEX%"); jakob Alexey Kamenchuk wrote: >Hi, > >Is there the good way to customize generated SQL statements? >The solution I found requires adding my custom classes into the >org.apache.ojb.broker.accesslayer.sql package what I particularly dislike. > >I need to make query with case-insensitive LIKE-clause, that's something >like this: >SELECT ... WHERE UPPER(name) LIKE UPPER('alex%') > >Here is my solution: > >I created subclass of SqlSelectStatement and overrode appendCriteria: > >protected void appendCriteria(TableAlias alias, PathInfo pathInfo, >SelectionCriteria c, StringBuffer buf) >{ > if (c instanceof LikeCriteria) > appendLikeCriteria(alias, pathInfo,(LikeCriteria) c, buf); > else > super.appendCriteria(alias, pathInfo, c, buf); >} > >and added new method > >private void appendLikeCriteria(TableAlias alias, PathInfo pathInfo, >LikeCriteria c, StringBuffer buf) >{ > buf.append(" UPPER("); > appendColName(alias, pathInfo, c.isTranslateAttribute(), buf); > buf.append(") "); > buf.append(c.getClause()); > buf.append(" UPPER(?) "); >} > >These two methods reference to TableAlias class, which is declared as >package-private in org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement. >That's why I have to place my class into the same package. > >This subclass is instantiated in overridden >SqlGeneratorDefaultImpl#getPreparedSelectStatement > >Implementing it similarly to the parent I need access to SqlCacheKey class, >which is also not public; hence, the ancestor of SqlGeneratorDefaultImpl is >placed to org.apache.ojb.broker.accesslayer.sql package too. > >Best regards, >Alexey. > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]