2010-04-30 14 views
8

Im affrontare un problema semplice con la ricerca di entità da parte di una stringa (secondaria), che potrebbero contenere.Sottostringa di ricerca JPQL (JPA)

E.g. Ho utenti user1, usr2, useeeer3, user4 e entrerò nella finestra di ricerca "use" e mi aspetto di restituire user1, useeer3, user4.

Sono sicuro di sapere cosa intendo adesso. C'è qualche costruzione in JPA (JQPL)? Sarebbe bello cercare usando DOVE in qualche modo nelle query con nome. Qualcosa come "SELECT u FROM User u WHERE u.nickname contiene: sottostringa"

risposta

13

Utilizzare un'espressione LIKE. Ecco una citazione dalla sezione 4.6.9 Come Espressione dell'APP 1.0 spec (JSR 220):

La sintassi per l'utilizzo dell'operatore confronto [NOT] LIKE in un'espressione condizionale è il seguente:

string_expression [NOT] LIKE pattern_value [ESCAPE escape_character] 

Lo string_expression deve avere un valore stringa. Il pattern_value è un stringa letterale o un parametro ingresso stringa, in cui una sottolineatura (_) rappresenta un singolo carattere, un percentuale (%) di caratteri indica qualsiasi sequenza di caratteri (compresa la sequenza vuota) e tutti gli altri caratteri si presentano da soli. Il escape_character opzionale è una stringa solo carattere letterale o un parametro di ingresso carattere valori (cioè char o Character) ed è utilizzato per sfuggire il significato speciale dei sottolineatura e percentuali caratteri in pattern_value.

Esempi sono:

  • address.phone COME '12% 3' è vero per '123' '12993' e falso per '1234'
  • asentence.word LIKE 'l_se 'vale per 'perdere' e falso per 'loose'
  • aword.underscored LIKE '\ _%' FUGA '\' è vero per '_foo' e false per 'bar'
  • 01.235.164,106 mila
  • address.phone NOT LIKE '12% 3' è falsa per '123' e '12993' e vero per '1234'

Se il valore della del string_expression o pattern_value è NULL o sconosciuto, il valore dell'espressione LIKE è sconosciuto. Se è specificato lo escape_characterescape_character NULL, il valore dell'espressione LIKE è sconosciuto.

+0

Grazie mille :-) – JavaBeginner