Dieser Inhalt ist in der von Ihnen ausgewählten Sprache nicht verfügbar.

27.3. Usage


Hibernate Search uses annotations to map entities to a Lucene index. Check the reference documentation for more information.
Hibernate Search is completely integrated with the API, and semantic of JPA and Hibernate. Switching from a HQL- or Criteria-based query requires little code. The application interacts primarily with the FullTextSession API, which is a subclass of Hibernate's Session.
When Hibernate Search is present, JBoss Seam injects a FullTextSession:
@Stateful
@Name("search")
public class FullTextSearchAction implements FullTextSearch, Serializable {

  @In FullTextSession session;

  public void search(String searchString) {
    org.apache.lucene.search.Query luceneQuery = getLuceneQuery();
    org.hibernate.Query query session.createFullTextQuery(luceneQuery, 
                                                          Product.class);
    searchResults = query
                    .setMaxResults(pageSize + 1)
                    .setFirstResult(pageSize * currentPage)
                    .list();
  }
  [...]
}
Copy to Clipboard Toggle word wrap

Note

Here, FullTextSession extends org.hibernate.Session so that it can be used as a regular Hibernate Session.
A smoother integration is proposed if the JPA is used:
@Stateful 
@Name("search") 
public class FullTextSearchAction implements FullTextSearch, Serializable { 
  @In FullTextEntityManager em; 
  public void search(String searchString) { 
    org.apache.lucene.search.Query luceneQuery = getLuceneQuery(); 
    javax.persistence.Query query = em.createFullTextQuery(luceneQuery, 
                                                           Product.class); 
    searchResults = query 
                    .setMaxResults(pageSize + 1) 
                    .setFirstResult(pageSize * currentPage) 
                    .getResultList(); 
  } 
  [...]
}
Copy to Clipboard Toggle word wrap
Here, a FulltextEntityManager is injected where Hibernate Search is present. FullTextEntityManager extends EntityManager with search specific methods, the same way FullTextSession extends Session.
When an EJB 3.0 Session or Message Driven Bean injection is used (that is, where injection uses the @PersistenceContext annotation), the EntityManager interface cannot be replaced by using the FullTextEntityManager interface in the declaration statement. However, the implementation injected will be a FullTextEntityManager implementation, which allows downcasting.
@Stateful
@Name("search")
public class FullTextSearchAction implements FullTextSearch, Serializable {
  
  @PersistenceContext EntityManager em;

  public void search(String searchString) {
    org.apache.lucene.search.Query luceneQuery = getLuceneQuery();
    FullTextEntityManager ftEm = (FullTextEntityManager) em;
    javax.persistence.Query query = 
      ftEm.createFullTextQuery(luceneQuery, Product.class);
    searchResults = query
                    .setMaxResults(pageSize + 1)
                    .setFirstResult(pageSize * currentPage)
                    .getResultList();
  }
  [...]
}
Copy to Clipboard Toggle word wrap

Note

If you are accustomed to using Hibernate Search outside Seam, remember that you do not need to use Search.createFullTextSession when Hibernate Search is integrated with Seam.
For a working example of Hibernate Search, check the DVDStore or Blog examples in the JBoss Seam distribution.
Nach oben
Red Hat logoGithubredditYoutubeTwitter

Lernen

Testen, kaufen und verkaufen

Communitys

Über Red Hat Dokumentation

Wir helfen Red Hat Benutzern, mit unseren Produkten und Diensten innovativ zu sein und ihre Ziele zu erreichen – mit Inhalten, denen sie vertrauen können. Entdecken Sie unsere neuesten Updates.

Mehr Inklusion in Open Source

Red Hat hat sich verpflichtet, problematische Sprache in unserem Code, unserer Dokumentation und unseren Web-Eigenschaften zu ersetzen. Weitere Einzelheiten finden Sie in Red Hat Blog.

Über Red Hat

Wir liefern gehärtete Lösungen, die es Unternehmen leichter machen, plattform- und umgebungsübergreifend zu arbeiten, vom zentralen Rechenzentrum bis zum Netzwerkrand.

Theme

© 2025 Red Hat