Java JPA HibernateSearch投影
我正在尝试将JPA与HibernateSearch结合使用。我在中使用了示例5.3。结果正如预期的那样 然而,返回的数据是一个巨大的图表。我只需要数据的主键。所以,我尝试了示例5.9,但它只显示了HibernateAPI。没有Java JPA HibernateSearch投影,java,hibernate,jpa,lucene,hibernate-search,Java,Hibernate,Jpa,Lucene,Hibernate Search,我正在尝试将JPA与HibernateSearch结合使用。我在中使用了示例5.3。结果正如预期的那样 然而,返回的数据是一个巨大的图表。我只需要数据的主键。所以,我尝试了示例5.9,但它只显示了HibernateAPI。没有javax.persistence.Query.setProjection()方法 我可以使用什么来获取搜索结果的主键?我是否应该尝试从JPA中的EntityManager获取hibernate会话 谢谢您的帮助。示例5.3有点误导javax.persistence.Que
javax.persistence.Query.setProjection()方法
我可以使用什么来获取搜索结果的主键?我是否应该尝试从JPA中的EntityManager
获取hibernate会话
谢谢您的帮助。示例5.3有点误导<不必使用code>javax.persistence.Query
。相反,org.hibernate.search.jpa.FullTextQuery
具有我需要的setProjection()
方法。以下是生成的代码(具有完全限定的类名):
query2
进行投影,一切正常
//Open JPA session
javax.persistence.EntityManagerFactory emf=javax.persistence.Persistence.createEntityManagerFactory("manager1");
javax.persistence.EntityManager em=emf.createEntityManager();
em.getTransaction().begin();
//Make a FullText EM from the JPA session.
org.hibernate.search.jpa.FullTextEntityManager fullTextSession=org.hibernate.search.jpa.Search.getFullTextEntityManager(em);
//Build the lucene query.
org.apache.lucene.queryParser.QueryParser parser=new org.apache.lucene.queryParser.QueryParser("data1",new org.apache.lucene.analysis.standard.StandardAnalyzer());
org.apache.lucene.search.Query query=parser.parse("FindMe");
//Convert to a hibernate query.
org.hibernate.search.jpa.FullTextQuery query2=fullTextSession.createFullTextQuery(query, SampleBean.class);
//Set the projections
query2.setProjection("id");
//Run the query.
for (Object[] row:(List)query2.getResultList()){
//Show the list of id's
System.out.println(row[0]);
}
//Close
em.getTransaction().commit();
em.close();
emf.close();