Ich sehe ein einfaches Problem mit der Suche nach Entitäten durch eine (Teil-) Zeichenfolge, die sie enthalten könnten.
z. Ich habe Benutzer user1, usr2, useeeer3, user4 und ich werde eingeben, um Fenster "verwenden" zu suchen und ich erwarte, Benutzer1, useeer3, user4 zurückzugeben.
Ich bin sicher, du weißt, was ich jetzt meine. Gibt es eine Konstruktion in JPA (JQPL)? Es wäre schön, mit WHERE irgendwie in benannten Abfragen zu suchen. Etwas wie "SELECT u FROM Benutzer u WHERE u.nickname enthält: Teilstring"
Verwenden Sie einen LIKE
Ausdruck. Hier ist ein Zitat aus dem Abschnitt 4.6.9 Like Expression der Spezifikation JPA 1.0 (JSR 220):
Die Syntax für die Verwendung der Vergleichsoperator
%Vor%[NOT] LIKE
in a bedingter Ausdruck ist wie folgt:Der Zeichenfolgenausdruck muss a haben Zeichenfolgewert Das
pattern_value
ist ein String-Literal oder ein String-Wert Eingabeparameter, in dem ein Unterstrich steht (_) steht für ein einzelnes Zeichen, a Prozent (%) Charakter steht für irgendwas Sequenz von Zeichen (einschließlich der leere Sequenz) und alle anderen Charaktere stehen für sich. Das optionales escape_character ist a Einzelzeichenfolgeliteral oder a Zeichenwertige Eingabeparameter (d. h.char
oderCharacter
) und ist verwendet, um der besonderen Bedeutung von zu entkommen die Unterstrich- und Prozentzeichen inpattern_value
.Beispiele sind:
- address.phone WIE '12% 3 'ist wahr für' 123 '' 12993 'und falsch für' 1234 '
- asentence.word LIKE 'l_se' gilt für "loose" und false für "loose"
- aword.underscored LIKE '\ _%' ESCAPE '\' gilt für '_foo' und false für 'bar'
- address.phone NICHT WIE '12% 3 'ist falsch für' 123 'und' 12993 'und wahr für '1234'
Wenn der Wert von ist
string_expression
oderpattern_value
istNULL
oder unbekannt, der Wert von LIKE Ausdruck ist unbekannt. Wenn dieescape_character
ist angegeben und istNULL
, der Wert von LIKE Ausdruck ist unbekannt.