2016-05-23 4 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") 

「:」マークは、パラメータが使用されていることを示しています。検索コンテンツが含まれている広告を検索するためにワイルドカード%機能を実装する方法については、誰にも提案はありますか?私はまた、データベースのクラス別から

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

私getSearchedAdsメソッドが含まれている下

はお時間をいただき、ありがとうございます。

+0

「Mysql」または「sql-server」データベースを使用しましたか? – Blank

+0

@Reno私はデータベースを作成するためにMySQLワークベンチを使用しました –

答えて

0

私は、クエリにパラメータとして設定する前に、あなたがsearchStringにDB-ワイルドカード文字を連結する必要があると考えている:

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

と、そのままNamedQueryを保ちます。

+1

これはうまくいきました。どうもありがとうございました! –

関連する問題