1

我想使用 Hibernate 按关键字在其任何字段(作者名、书名、描述、出版商名称)上搜索我的表(书)。

我尝试使用下面的代码,但我的代码仅适用于两个字段:

新的更新代码,但此处“createDisjunction()”不支持。显示错误 -> 未定义类型限制的方法 create disjunction

           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 回答