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