2013-01-02 14 views
24

Nel mio codice di esempio Hibernate JPA ..Hibernate Named Query utilizzando gli operatori Like e%%?

public List<AttendeesVO> addAttendees(String searchKeyword) { 
    TypedQuery<AttendeesVO> query = entityManager.createQuery(" select at from AttendeesVO at where at.user.firstName LIKE :searchKeyword",AttendeesVO.class); 
    query.setParameter("searchKeyword", searchKeyword+"%"); 
    return query.getResultList(); 
} 

si sta lavorando bene quando dare intera stringa firstName=Narasimham

Ma non funziona quando diamo un carattere di Narasimham cioè a o n

In realtà il mio pensiero è che sto dando l'operatore Like con % % in modo che funzioni qualsiasi carattere di una determinata stringa ..

risposta

41

si utilizza query.setParameter("searchKeyword", searchKeyword+"%");

invece di query.setParameter("searchKeyword", "%"+searchKeyword+"%");

primo restituirà righe per NarasimhamNNaNarNara ecc

16

Ma non funziona quando diamo un carattere di Narasimham vale a dire un o

Perché stai facendo ricerca case sensitive. Prova N, Na, Nar invece. Se si desidera eseguire una ricerca senza distinzione tra maiuscole e minuscole, provare a utilizzare upper o lower. come

entityManager.createQuery("select at from AttendeesVO at where lower(at.user.firstName) LIKE lower(:searchKeyword)",AttendeesVO.class); 

In realtà il mio pensiero è Sto dando come operatore con%%

searchKeyword+"%" mezzi valori di ritorno che inizia con searchKeyword.
"%"+searchKeyword+"%" significa valori di ritorno che contiene searchKeyword.
Decidere secondo il vostro requirment.