Je crée un site web avec l'API REST, Angular 2 sur front-end et Spring sur back-end. Et il y a un parchemin infini quand je regarde le résultat de la requête. Et j'utilise la recherche en texte intégral pour trouver les correspondances de ma demande. Ma question est comment créer des requêtes portionnées dans ma recherche Hibernate? Si possible, présentez quelques exemples de code.Hibernate Search Requêtes portionnées
Paix de code que j'utilise pour la recherche de texte intégral
@Repository
@Transactional
public class HibernateSearch {
@PersistenceContext
private EntityManager entityManager;
public List<Manual> fulltextSearching(String keyword){
if(keyword.equals("")) return Collections.emptyList();
FullTextEntityManager fullTextEntityManager =
org.hibernate.search.jpa.Search.getFullTextEntityManager(entityManager);
QueryBuilder qb = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder().forEntity(Manual.class).get();
javax.persistence.Query jpaQuery =
fullTextEntityManager.createFullTextQuery(createQuery(qb, keyword), Manual.class);
@SuppressWarnings("unchecked")
List<Manual> result = jpaQuery.getResultList();
return result;
}
private org.apache.lucene.search.Query createQuery(QueryBuilder qb, String keyword){
return qb
.keyword()
.onFields("name", "introduction", "user.username", "tags.name")
.matching(keyword)
.createQuery();
}
}
merci, ça marche pour moi –
Pour obtenir la deuxième page, avez-vous besoin de créer un nouveau 'FullTextQuery' ou pouvez-vous réutiliser l'objet' jpaQuery'? – nuoritoveri
@nuoritoveri Vous pouvez réutiliser la requête tant que votre EntityManager est ouvert. –