0
我试图用hibernate搜索来构建这个查询,但我无法成功。如何在Hibernate搜索中使用BooleanJunction
Select * from message where (sender.id = "1" AND message.status = "sent") OR (recipient.id = "1" AND message.status = "new") OR (recipient.id = "1" AND message.status = "seen")
我该怎么用lucene做到这一点?
我坚持在这里
FullTextSession fullTextSession = Search.getFullTextSession(getSessionFactory().getCurrentSession());
QueryBuilder qb = fullTextSession.getSearchFactory()
.buildQueryBuilder().forEntity(getPersistentClass()).get();
BooleanQuery bquery = new BooleanQuery();
Query q1 = qb.keyword().onField("sender.id").matching(user.getId()).createQuery();
Query q2 = qb.keyword().onField("status").matching(Message.Status.SENT).createQuery();
BooleanJunction must1 = qb.bool();
must1.must(q1);
must1.must(q2);
Query q3 = qb.keyword().onField("recipient.id").matching(user.getId()).createQuery();
Query q4 = qb.keyword().onField("status").matching(Message.Status.NEW).createQuery();
BooleanJunction must2 = qb.bool();
must2.must(q3);
must2.must(q4);
Query q5 = qb.keyword().onField("recipient.id").matching(user.getId()).createQuery();
Query q6 = qb.keyword().onField("status").matching(Message.Status.SEEN).createQuery();
BooleanJunction must3 = qb.bool();
must3.must(q5);
must3.must(q6);
任何帮助吗?
谢谢它的工作 – devrim