Consulta HQL que busque tanto palavras acentuadas e não acentuadas?

Olá,

Preciso fazer uma consulta em HQL que busque tanto palavras acentuadas e não acentuadas?

Até o momento eu consigo através do método normalize tirar a acentuação e buscar tudo que não não possui acentuação, também coloquei o método replacer para considerar a acentuação.

@Override
public List findAuctionParameter(String value, Integer offset, Integer size) {
Map<String, Object> parameters = new HashMap<String, Object>();

	String valueNormalize = Util.normalize(value);     
	String valueReplacer = Util.replacer(value);
	
	final String SELECT_ALL_PARAMETER = "select a "
			+ "from AuctionParameter a "
			+ "inner join a.city city " 
			+ "inner join a.serviceArea serviceArea "
			+ "inner join a.product product "
			+ "inner join a.osType osType "; 

	
	StringBuilder hql = new StringBuilder();
	
	hql.append(SELECT_ALL_PARAMETER);
	if (!Util.isEmpty(value) && !"null".equalsIgnoreCase(value)) {
		hql.append(" where upper(city.name) like upper(:search)");
		hql.append(" OR upper(city.name) like upper(:searchNoNormalize) ");
		hql.append(" OR upper(product.name) like upper(:search)");
		hql.append(" OR upper(product.name) like upper(:searchNoNormalize)");
		hql.append(" OR upper(serviceArea.description) like upper(:search)");
		hql.append(" OR upper(serviceArea.description) like upper(:searchNoNormalize)");
		hql.append(" OR upper(osType.description) like upper(:search)");
		hql.append(" OR upper(osType.description) like upper(:searchNoNormalize)");


	}
	
	TypedQuery<AuctionParameter> query = entityManager.createQuery(hql.toString(), AuctionParameter.class);

	for (String key : parameters.keySet()) {
		query.setParameter(key, parameters.get(key));
	}

	if (!Util.isEmpty(value) && !"null".equalsIgnoreCase(value)) {
		   query.setParameter("search", "%"+valueNormalize.toUpperCase()+"%");
		   query.setParameter("searchNoNormalize", "%"+valueReplacer.toUpperCase()+"%");
		  }

	query.setFirstResult(offset - 1);
	query.setMaxResults(size);
	return query.getResultList();
}

Util.java

public static String normalize(String entry) {
if (isEmpty(entry))
return entry;
entry = Normalizer.normalize(entry, Normalizer.Form.NFD);
return entry.replaceAll("[^\p{ASCII}]", “”);
}

public static String replacer(String param) {
    String t1 = "áàâäçéèëêùûüôöïî";
    String t2 = "aaaaceeeeuuuooii";
    String s = param;
    for (int i = 0; i < t1.length(); i++) {
        s = "replace(" + s + ",'" + t1.charAt(i) + "','" + t2.charAt(i) + "')";
    }
    return s;
}

ja tentou usar um “coringa” na consulta?
Por exemplo:

“SELECT * FROM table WHERE campo LIKE ‘%BUSCA%’”

no caso o coringa seria o ‘%’

Sim, estou utilizando

if (!Util.isEmpty(value) && !“null”.equalsIgnoreCase(value)) {
query.setParameter(“search”, “%”+valueNormalize.toUpperCase()+"%");
query.setParameter(“searchNoNormalize”, “%”+valueReplacer.toUpperCase()+"%");
}