2013-01-02 52 views
24

在我的Hibernate JPA示例代碼..Hibernate命名查詢使用Like和%%運算符?

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(); 
} 

給人當整個字符串firstName=Narasimham

但它是不工作的時候,我們給的Narasimhaman

任何字符它工作正常其實我的想法是我給Like運營商% %所以它工作任何字符給定的字符串..

回答

41

您使用query.setParameter("searchKeyword", searchKeyword+"%");

,而不是query.setParameter("searchKeyword", "%"+searchKeyword+"%");

第一個將返回的行爲NarasimhamNNaNarNara

16

但當我們給的拉辛哈即任何字符它不工作 或n

因爲你正在做大小寫敏感的搜索。改爲嘗試N,Na,Nar。如果您想執行不區分大小寫的搜索,請嘗試使用upperlower。像

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

其實我的想法是我給像運營商%%

searchKeyword+"%"方法的返回值,其開始與 searchKeyword。
"%"+searchKeyword+"%"表示包含的返回值 searchKeyword。
根據您的要求做出決定。