I do have a static metamodel with a NUMBER (actually, BigDecimal, don\'t ask why) column. Now I would like to do a LIKE query against that number column:
Cri
For the people, who are still looking for a solution.
Knowing that HQLstr
function does the job (at least for Hibernate v. 3.6.9.Final) one can implement his own FunctionExpression
like:
//plagiarized from org.hibernate.ejb.criteria.expression.function.CastFunction
public class StrFunction extends BasicFunctionExpression implements FunctionExpression, Serializable {
public static final String FCT_NAME = "str";
private final Selection selection;
public StrFunction(CriteriaBuilder criteriaBuilder, Selection selection) {
super((CriteriaBuilderImpl) criteriaBuilder, String.class, FCT_NAME);
this.selection = selection;
}
@Override
public void registerParameters(ParameterRegistry registry) {
Helper.possibleParameter(selection, registry);
}
@Override
public String render(CriteriaQueryCompiler.RenderingContext renderingContext) {
return FCT_NAME + '(' + ((Renderable) selection).render(renderingContext) + ')';
}
}
and then use it:
cb.like(new StrFunction (cb, root.get(MyObject_.id)), "%mySearchTerm%");