Question

Je dois rechercher un champ numérique avec des caractères génériques. La requête JQPL correspondante serait comme ceci:

SELECT e From Entity e where e.personNumber LIKE :numberPattern

numberPattern est une chaîne comme ceci:. "1 ?? 2" et e.personNumber est un numéro sur la base de données (H2)

Si je cours avec ce JQPL il n'y a pas de problème du tout, mais je ne peux pas le mettre dans une requête queryDSL.

lorsque je tente de

andBuilder.and(entity.personNumber.stringValue().like(numberPattern)

Je reçois

org.apache.openjpa.persistence.ArgumentException: "str (" bei Zeichen 7 gefunden, erwartet wurde jedoch ["(", "+", ...

Si je tente de le faire comme ceci:

Constant<String> constant = (Constant<String>) Expressions.constant(personNummer);
PredicateOperation predicateOperation = new PredicateOperation(Ops.LIKE, entity.personNumber, Expressions.constant(constant));

le résultat sera un

Data conversion error converting "1*"; SQL statement:
Caused by: java.lang.NumberFormatException: For input string: "1*"

Alors, est-il un moyen d'avoir une opération comme sur un champ numérique avec queryDSL?

Était-ce utile?

La solution

Did you try this

PredicateOperation predicateOperation = new PredicateOperation(Ops.LIKE,
  entity.personNumber, Expressions.constant("1%"));

I will see why the stringValue() expression doesn't work for OpenJPA.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top