이 콘텐츠는 선택한 언어로 제공되지 않습니다.

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.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat