Hallo,
ich versuche gerade ein Predicate zu erzeugen. JpaQueryParameter ist meine Helper Klasse, mit der ich die Werte übergebe...
Für Strings klappt das auch. Aber nicht für Longs. hier bekomme ich diese Meldung:
Was mache ich falsch? Hat jemand eine Idee?
Object value = jpaQueryParameter.getParameterValue(); wird wie folge befüllt:
ich versuche gerade ein Predicate zu erzeugen. JpaQueryParameter ist meine Helper Klasse, mit der ich die Werte übergebe...
Für Strings klappt das auch. Aber nicht für Longs. hier bekomme ich diese Meldung:
Unaware how to convert value [[2, 2] : java.util.ArrayList] to requested type [java.lang.Long]
Java:
/**
* Erstellt Predicate
*
* @return
*/
public static <T> Predicate createPredicate(CriteriaBuilder cb, Root<T> root, JpaQueryParameter jpaQueryParameter) {
String fieldName = jpaQueryParameter.getParameterName();
Object value = jpaQueryParameter.getParameterValue();
Object valueUntil = jpaQueryParameter.getParameterValueUntil();
Expression expression = null;
if (fieldName.contains(".")) {
String[] array = fieldName.split(java.util.regex.Pattern.quote("."));
List<String> arraylist = Arrays.asList(array);
Path current = root;
for (String s : arraylist) {
current = current.get(s);
expression = current;
}
} else {
expression = root.get(fieldName);
}
Predicate p = null;
// Contains bei einer Liste
if (jpaQueryParameter.getOperatorEnum().equals(OperatorEnum.CONTAINS_LIST)) {
p = expression.in(value);
}
Was mache ich falsch? Hat jemand eine Idee?
Object value = jpaQueryParameter.getParameterValue(); wird wie folge befüllt:
Java:
List<Long> valueList = Lists.newArrayList(1, 2);