<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Message</TITLE>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.2963" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial><FONT size=2>I ran across a minor code smell in Hibernate 
when dealing with case-insensitive like.&nbsp; The offending class 
is&nbsp;ILikeExpression<SPAN 
class=745462720-02052007>:</SPAN></FONT></FONT></DIV>
<DIV><FONT face=Arial><FONT size=2><SPAN 
class=745462720-02052007></SPAN></FONT></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;if ( dialect instanceof 
PostgreSQLDialect ) {<BR>&nbsp;&nbsp;&nbsp;return columns[0] + " ilike 
?";<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;else {<BR>&nbsp;&nbsp;&nbsp;return 
dialect.getLowercaseFunction() + '(' + columns[0] + ") like 
?";<BR>&nbsp;&nbsp;}<BR></FONT></DIV>
<DIV><SPAN class=745462720-02052007><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><SPAN class=745462720-02052007>This might be better 
and more OO:</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2>&nbsp;</DIV></FONT>
<DIV><FONT face=Arial size=2>&nbsp; String ilikeOperator = 
dialect.getILikeOperator();<BR>&nbsp; if ( ilikeOperator != null ) 
{<BR>&nbsp;&nbsp;&nbsp;return columns[0] + " " + ilikeOperator + " 
?";<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;else if ( 
dialect.areStringComparisonsCaseInsensitive() ) {<BR>&nbsp;&nbsp;&nbsp;return 
columns[0] + " like 
?";<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;else&nbsp;{<BR>&nbsp;&nbsp;&nbsp;return 
dialect.getLowercaseFunction() + '(' + columns[0] + ") like 
?";<BR>&nbsp;&nbsp;}<BR></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>PostgresSQLDialect.getILikeOperator() would return 
"ilike".&nbsp; All other dialects would return null.<BR></DIV></FONT>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV></BODY></HTML>