2017-09-21 10 views
1

エンティティプロパティを次のような形式で取得したいと考えています:property_name: valueHibernate Neo4jがキー値形式で結果を取得します

私は結果をこのように取得しようとしています:

public void retrievePerson(){ 
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistence"); 
    EntityManager em = emf.createEntityManager(); 
    EntityTransaction tx = em.getTransaction(); 
    tx.begin(); 
     try{ 

     String query = "MATCH (p:Person {id:3}) RETURN p.firstname, p.lastname"; 

     List<Object[]> person = (List<Object[]>) em.createNativeQuery(query).getResultList(); 

     em.flush(); 
     tx.commit(); 
     em.clear(); 
     em.close(); 
     emf.close(); 

     } 
     catch (HibernateException e) { 
     if (tx!=null) tx.rollback(); 
     e.printStackTrace(); 
     } 
    } 

私は、クエリによって返されたオブジェクトを管理するエンティティであるどこかで読みました。

私はこのようになり、結果を希望:私は私が探しています何かをかもしれない。このsetResultTransformer(AliasToEntityMapResultTransformer.INSTANCEを発見したが、私はそれが仕事を得ることができません{"firstname":"Jon", "lastname":"Smith"}

これを達成する方法はありますか?あなたが実体であるために、戻り値を探しているなら、これは動作します

MATCH (p:Person {id:3}) 
RETURN { firstname: p.firstname, lastname: p.lastname } 

答えて

0

ことにクエリを変更してみてください

String query = "MATCH (p:Person {id:3}) RETURN p"; 
List<Person> person = (List<Person>) em.createNativeQuery(query, Person.class).getResultList(); 

実は、この場合には、これは、よりになるだろうセンス:

Person poem = (Person) em.createNativeQuer(query, Person.class).getSingleResult(); 
+0

これは問題なく動作します。私はこのような結果を得ています[{firstname = Jon、lastname = Smith}]。この配列を適切なJSONに変換することができます。 – Porjaz

+0

@Porjazこのトリックを試してください: 'MATCH(P:人{ID:3})({:p.firstname、LASTNAME:FIRSTNAME p.lastnameを}) RETURN収集[0]' –

+0

それは依然として同じ形式でそれらを与えます'' {{firstname = Jon、lastname = Smith} '' – Porjaz

0

+0

これは私が探しているものではないと思います。私はサブグラフ(家系図)を返そうとしているので、クエリはかなり大きいです。だから私はすべての人の姓、名字、関係、relationship_propertyなどを返す必要があります。Bruno Peresのクエリは、私が探していた方法でデータを返します。それは '[{firstname = Jon、lastname = Smith}]'を返しました。返された結果が – Porjaz

+0

にHibernate OGMは現在ResultTransformersをサポートしていませんJSON形式であることができれば理想的には、それは最高のだろう、私はそれのために問題を作成しました:https://hibernate.atlassian.net/browse/OGM-1328 – Davide

関連する問題