Consulta como operación en el número
Pregunta
Tengo que buscar en un campo número con comodines. La consulta JQPL correspondiente sería así:
SELECT e From Entity e where e.personNumber LIKE :numberPattern
NumberPattern es una cadena como esta: "1 ?? 2" y E.Personnumber es un número en la base de datos (H2).
Si ejecuto esto con JQPL, no es un problema en absoluto, pero no puedo ponerlo en una consulta de consulta.
Cuando intento
andBuilder.and(entity.personNumber.stringValue().like(numberPattern)
Yo tengo un
org.apache.openjpa.persistence.ArgumentException: "str (" bei Zeichen 7 gefunden, erwartet wurde jedoch ["(", "+", ...
Si intento hacerlo así:
Constant<String> constant = (Constant<String>) Expressions.constant(personNummer);
PredicateOperation predicateOperation = new PredicateOperation(Ops.LIKE, entity.personNumber, Expressions.constant(constant));
El resultado será un
Data conversion error converting "1*"; SQL statement:
Caused by: java.lang.NumberFormatException: For input string: "1*"
Entonces, ¿hay alguna forma de tener una operación similar en un campo Número con QuerydsL?
Solución
¿Intentaste esto?
PredicateOperation predicateOperation = new PredicateOperation(Ops.LIKE,
entity.personNumber, Expressions.constant("1%"));
Veré por qué la expresión StringValue () no funciona para OpenJPA.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow