public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery)
     throws HibernateException {
   Dialect dialect = criteriaQuery.getFactory().getDialect();
   String[] columns = criteriaQuery.getColumnsUsingProjection(criteria, propertyName);
   if (columns.length != 1) {
     throw new HibernateException("Like may only be used with single-column properties");
   }
   String lhs = ignoreCase ? dialect.getLowercaseFunction() + '(' + columns[0] + ')' : columns[0];
   return lhs + " like ?" + (escapeChar == null ? "" : " escape \'" + escapeChar + "\'");
 }