1

Hibernate を使用して、任意のフィールド (author_name、book_title、description、publisher name) でテーブル (本) をキーワードで検索したいと考えています。

以下のコードを使用してみましたが、私のコードは 2 つのフィールドだけで十分です。

新しい更新コードですが、ここでは "createDisjunction()" はサポートされていません。

           import org.hibernate.Criteria;
           import org.hibernate.HibernateException;
           import org.hibernate.Query;
           import org.hibernate.Session;
           import org.hibernate.SessionFactory; 
           import org.hibernate.criterion.Restrictions;
            ............
           ............
           qry.add(Restrictions.createDisjunction()
           //But this 'createDisjunction()'  is showing error              
          //error as:the method create disjunction is undefined for the type restrictions

    .add(Restrictions.eq("authLastname",   keywordsearch ))
    .add(Restrictions.eq("bookTitile", keywordsearch  ))
    .add(Restrictions.eq("description",   keywordsearch  )) 
                     ); 

理解するためにこのチュートリアルも試しましたが、問題を解決できません。

4

2 に答える 2

2
Criteria cr = session.createCriteria(Book.class);
cr.add(Restrictions.disjunction().add(Restrictions.eq("author_name", keyword))
                                 .add(Restrictions.eq("book_title", keyword))
                                 .add(Restrictions.eq("description", keyword))
                                 .add(Restrictions.eq("publisher_name", keyword)));

また、Java の命名規則も尊重する必要があります。author_nameあるべきだauthorNamebook_titleあるべきだbookTitle、など

于 2012-11-05T20:26:33.143 に答える
0

Hibernate Searchの場合、次のようになります。

Query luceneQuery = mythQB
    .keyword()
    .onFields("authLastname","bookTitile","description")
    .matching(keywordsearch)
    .createQuery();

もちろん、これはクエリの一部です。Hibernate Searchを有効にして、適切な注釈などを追加する必要があります。これはすべてドキュメントに記載されています。はじめにのセクションから始めます。必要なものがすべて含まれている必要があります。

于 2012-11-07T08:42:08.040 に答える