0
我想使用Hibernate搜索全文搜索功能。我有一個簡單的Java EE應用程序。我註釋的實體類,這裏是我的persistence.xml:Hibernate搜索和JPA與JTA事務
<persistence-unit name="library">
<jta-data-source>jdbc/webrarydb</jta-data-source>
<class>net.hcpeter.webrary.entities.Author</class>
<class>net.hcpeter.webrary.entities.Book</class>
<class>net.hcpeter.webrary.entities.Request</class>
<class>net.hcpeter.webrary.entities.User</class>
<properties>
<property name="hibernate.search.default.directory_provider" value="org.hibernate.search.store.FSDirectoryProvider"/>
<property name="hibernate.search.indexing_strategy" value="manual"/>
<property name="hibernate.search.default.indexBase" value="/Users/hcpeter/Documents/workspace/indexes"/>
<property name="hibernate.current_session_context_class" value="org.hibernate.context.JTASessionContext"/>
</properties>
</persistence-unit>
我試圖尋找這樣說:
EntityManager em = authorFacade.getEntityManager();
FullTextEntityManager ftem = org.hibernate.search.jpa.Search.getFullTextEntityManager(em);
ftem.getTransaction().begin();
QueryBuilder qb = ftem.getSearchFactory().buildQueryBuilder().forEntity(Author.class).get();
org.apache.lucene.search.Query query = qb.keyword().onFields("firsName", "lastName").matching("Author#1").createQuery();
javax.persistence.Query persistenceQuery = ftem.createFullTextQuery(query, Author.class);
List<Author> result = persistenceQuery.getResultList();
em.getTransaction().commit();
em.close();
for (Author author : result) {
System.out.println(author.getLastName() + " " + author.getFirstName());
}
return result;
然後我給在使用JTA不能使用EntityTransaction。 所以我的問題是如何使用HTA搜索與JTA?
我想使用JTA事務。但是,我如何使用lucene查詢?當EntityManager來自非FullTextEntityManager時,我需要QueryBuilder。當我嘗試獲取fullTextEntityManager時,我得到了'試圖在沒有Hibernate EntityManager的情況下使用Hibernate Search' 。到目前爲止我還沒有找到一個例子...... – hcpeter
那麼您是否使用了比Hibernate更多的其他JPA實現?哪個應用服務器?我可以看到你沒有在persistence.xml中定義提供者,所以它將成爲應用服務器中默認的東西。如果你想確定它是Hibernate,那麼你必須添加 org.hibernate.ejb.HibernatePersistence ,如在此處所述:http://banana-blog.net/tag/jpa/ –
不,我使用hibernate與玻璃魚3.1。我使用javax.persistence.criteria.CriteriaQuery和CriteriaBuilder構建了我的查詢。 – hcpeter