I ran across a minor code smell in Hibernate when dealing with
case-insensitive like.  The offending class is ILikeExpression:
 
  if ( dialect instanceof PostgreSQLDialect ) {
   return columns[0] + " ilike ?";
  }
  else {
   return dialect.getLowercaseFunction() + '(' + columns[0] + ") like
?";
  }

 
This might be better and more OO:
 
  String ilikeOperator = dialect.getILikeOperator();
  if ( ilikeOperator != null ) {
   return columns[0] + " " + ilikeOperator + " ?";
  }
  else if ( dialect.areStringComparisonsCaseInsensitive() ) {
   return columns[0] + " like ?";
  }
  else {
   return dialect.getLowercaseFunction() + '(' + columns[0] + ") like
?";
  }

 
PostgresSQLDialect.getILikeOperator() would return "ilike".  All other
dialects would return null.

 
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to