質問

私はHibernateSearchでJPAを使用しようとしています。私は HTTPに例5.3を使用://ドキュメント.jboss.org /休止/安定/検索/参照/ EN / HTML /検索query.htmlする。期待通りの結果が出てきます。

しかし、戻ってくるデータは、巨大なグラフです。私は、データのみの主キーを必要としています。だから、私は例5.9しようとしたが、それだけで、HibernateのAPIを示しています。 javax.persistence.Query.setProjection()方法はありませんでした。

私は、検索結果のちょうど主キーを取得するために使用することができますか?私は、JPAでsessionから休止EntityManagerを取得しようとするべきでしょうか?

任意の助けてくれてありがとう。

役に立ちましたか?

解決

例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は、投影を行い、すべてが順調です!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top