Thursday, October 22, 2009

Hibernate: Case Insensitive Query

We ran into a situation where we needed to match a string from our application to a string in the database. A very common task. But this time we needed it to be a case insensitive match. In order to do that using Hibernate annotations, we ended up using Restrictions.ilike().

Here is some example code:

public List fetchByCountry(String country)

{

DetachedCriteria criteria = DetachedCriteria.forClass(MobileCarrier.class);

criteria.add(Restrictions.ilike("country", country, MatchMode.EXACT));

return getHibernateTemplate().findByCriteria(criteria);

}


The ilike method is a case insensitive like statement, and when combined with a MatchMode.EXACT, it accomplishes the task of an exact string case insensitive match.