我希望使用Hibernate在关键字的任何字段(author_name,book_title,description,publisher name)上搜索我的表(book)。
我尝试使用下面的代码,但我的代码只适用于两个字段:
新的更新代码但是这里“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 ))
);
我也试过this tutorial来理解,但我无法解决我的问题。
答案 0 :(得分: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
应为authorName
,book_title
应为bookTitle
等。
答案 1 :(得分:0)
对于Hibernate Search,它看起来像:
Query luceneQuery = mythQB
.keyword()
.onFields("authLastname","bookTitile","description")
.matching(keywordsearch)
.createQuery();
这只是查询的一部分。您需要启用Hibernate Search并添加正确的注释等。它都在documentation中。从入门部分开始。它应该包含你需要的一切。