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);
}