I am using org.springframework.data.jpa.domain.Specification together with JpaSpecificationExecutor to easily create queries with conditions in Java but now I need to call a MySQL DB function that returns an integer value.
The problem is that it is unclear how to pass an argument for this function as I am not using TypedQuery:
// cb here is CriteriaBuilder
ParameterExpression param = cb.parameter(String.class);
Predicate predicate = cb.greaterThan(cb.function("A_FUNCTION",
Integer.class, param), 0);
Specification spec = cb.and(predicate);
// query is executed like this
return (int) repositoryThatExtendsJpaSpecificationExecutor.count(test);
And the example from here is not helping.
I think what you really need is a literal which you can create using
CriteriaBuilder.literal
. A full example would look likeIf the value doesn't come from your application you can use (m)any of the functions returning an
Expression
.