I want to invoke CriteriaBuilder methods, e.g equal, like..., with Methode.invoke(), however such methods take javax.persistence.criteria.Expression as arguments, i'm looking for a way to cast primitive types (String, Double, int...) into Expression<?>, so I can run correctly the following code :
public static Specification<Balance> withLine(String line, String operator) {
return (root, query, builder) -> {
Method method = null;
try {
method = CriteriaBuilder.class.getMethod(operator, Expression.class, Expression.class);
Expression lineExp = //cast line to Expression;
return (Predicate) method.invoke(builder, root.get("line"), lineExp );
} catch (Exception e) {
e.printStackTrace();
}
return null;
};
}