2016-05-23 37 views
0

我在我的網站的SQL查詢中使用eclipselink語法時遇到困難。目前,我已經使用適當的按鈕創建了搜索文本框條目。數據記錄可以通過標題和描述進行搜索,但搜索內容必須與我的數據庫數據中的標題/描述完全匹配。我的主要問題是使用帶有參數「searchString」的LIKE子句和通配符功能(%)創建正確的SQL查詢。實現搜索功能 - 以字符串作爲參數和通配符的eclipselink SQL%

下面,我已經包含了我的來自實體類的查詢的示例。

@NamedQuery(name = "Ad.findByString", query = "SELECT a FROM Ad a WHERE a.title LIKE :searchString OR a.description LIKE :searchString") 

我明白「:」標記表示正在使用一個參數。有沒有人對如何實現通配符%功能有任何建議,以便搜索返回包含搜索內容的廣告?

下面我也包括我getSearchedAds方法從數據庫類

public static Collection <Ad> getSearchedAds (String searchString) { 
     EntityManager em = DBUtils.getEmFactory().createEntityManager(); 
     Collection<Ad> results = null; 

     TypedQuery<Ad> q = em.createNamedQuery("Ad.findByString", Ad.class); 
     q.setParameter("searchString", searchString); 

     try { 
      results = q.getResultList(); 

     } catch (Exception e) { 
      results = null; 
     } 

謝謝您的時間。

+0

'Mysql'或'sql-server',你使用了哪個數據庫? – Blank

+0

@Reno我使用MySQL工作臺創建我的數據庫 –

回答

0

我相信你需要的DB-通配符串聯到searchString你之前設置它作爲一個參數查詢:

searchString = "%" + searchString + "%"; 
q.setParameter("searchString", searchString); 

,並保持NamedQuery原樣。

+1

這工作。非常感謝你! –