Thursday, January 12, 2012

Case insensitive query in hibernate

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

No comments: