Hibernate Search - Как вывести список всех записей по умолчанию - PullRequest
3 голосов
/ 07 мая 2009

Я использую Hibernate-поиск.

У меня есть текстовое поле поиска на моей странице JSP. Если я введу какой-нибудь текст, он вернёт правильный результат. Но если я оставлю пустое сообщение и нажму кнопку поиска, он не вернет никаких записей.

Код:

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();

String searchQuery = "Admin";
String[] userFields = {"firstName", "lastName", "role_groupName", "userId"};
QueryParser parser = new MultiFieldQueryParser(userFields, new StandardAnalyzer());
org.apache.lucene.search.Query luceneQuery;
try
{
    luceneQuery = parser.parse(searchQuery);
}
catch (ParseException e) 
{
    throw new RuntimeException("Unable to parse query: " + searchQuery, e);
}

FullTextSession ftSession = Search.getFullTextSession(session);
org.hibernate.Query query = ftSession.createFullTextQuery(luceneQuery, UserVO.class);

List results = query.list();
System.out.println("Result size:" + results.size());    

Ответы [ 2 ]

4 голосов
/ 14 июля 2014

AllContext org.hibernate.search.query.dsl.QueryBuilder.all ()

Запрос, соответствующий всем документам (обычно смешанный с логическим запросом).

Это метод, который вам нужно использовать

Вот пример кода для вашей проблемы

@Test
public void testSearchUsingQueryBuilder() {
    FullTextSession fullTextSession = org.hibernate.search.Search
            .getFullTextSession(sessionFactory.getCurrentSession());
    QueryBuilder builder = fullTextSession.getSearchFactory()
            .buildQueryBuilder().forEntity(Country.class).get();
    org.apache.lucene.search.Query query = builder.all().createQuery();
    FullTextQuery jpaQuery = fullTextSession.createFullTextQuery(query,
            Country.class);
    System.out.println("Before HQL =" + startDate);
    List<Country> tempCountry = jpaQuery.list();
}
3 голосов
/ 20 января 2010

Я просто поставил "*", если текстовое поле поиска пустое. Так что он возвращает все записи. Теперь это работает нормально для меня. Это мой код.

try
{
    if(searchText == null || searchText.trim().length()==0)
    {
        searchText = "*";
    }
        luceneQuery = parser.parse(searchText);
    }
    catch (ParseException e)
    {
        throw new RuntimeException("Unable to parse query: " + searchText, e);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...