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?

¿Fue útil?

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
scroll top