2009-07-15 11 views
2

JPAをHibernateSearchで使用しようとしています。私はhttp://docs.jboss.org/hibernate/stable/search/reference/en/html/search-query.htmlのExample 5.3を使用しました。結果は期待どおりに出てくる。JPA HibernateSearch Projections

しかし、戻ってくるデータは巨大なグラフです。私はデータの主キーが必要です。だから、私はExample 5.9を試しましたが、Hibernate APIしか示していません。 javax.persistence.Query.setProjection()メソッドはありませんでした。

検索結果の主キーのみを取得するにはどうすればよいですか?私はJPAのEntityManagerから休止状態を得るべきですか?session

ありがとうございました。

答えて

2

例5.3は少し誤解を招いていました。 javax.persistence.Queryを使用する必要はありません。代わりに、org.hibernate.search.jpa.FullTextQueryには、私が必要としている方法setProjection()があります。ここでは(完全修飾クラス名を持つ)結果のコードは次のとおりです。


     //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(); 
 

query2投影し、すべてがうまくありません!

関連する問題