JPQL (JPA) Teilstring suchen

8

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"

    
JavaBeginner 30.04.2010, 21:44
quelle

1 Antwort

13

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 [NOT] LIKE in a   bedingter Ausdruck ist wie folgt:

%Vor%      

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 oder Character ) und ist   verwendet, um der besonderen Bedeutung von zu entkommen   die Unterstrich- und Prozentzeichen   in pattern_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 oder pattern_value   ist NULL oder unbekannt, der Wert von   LIKE Ausdruck ist unbekannt. Wenn die    escape_character ist angegeben und ist    NULL , der Wert von LIKE   Ausdruck ist unbekannt.

    
Pascal Thivent 01.05.2010, 00:55
quelle

Tags und Links