2017-02-03 13 views
0

私はneo4jデータベースで "User and Review"というテーブルを持っています。それらのデータをspringデータneo4jから取得する必要があります。ここで私はモーダルを得たくありません。しかし、私は特定の価値が必要です。 Id、メッセージ、評価などです。問題は、これらのカスタム戻り値をDbからマップする方法です。それで私を助けてください。neo4jを使用してspringデータjpaを使用してカスタム結果を取得する方法は?

サンプルクエリは、次のとおりです。

@Query("MATCH (from:User)-[r:REVIEWED]->(to:User) where r.eventId={0} return ID(r),r.message,r.rating,r.eventId,r.zimId,from.firstName,to.firstName") 
    public List<ReviewRelatioshipDto> getReviewsByEventIdAndId(Long eventId); 

例外:

SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/social] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: Scalar response queries must only return one column. Make sure your cypher query only returns one item.] with root cause 
java.lang.RuntimeException: Scalar response queries must only return one column. Make sure your cypher query only returns one item. 

答えて

3

2 [オプション1があること@QueryResultを使用することであるため、ReviewRelationshipDtoは注釈付きとJavaBeanのゲッターの規則や使用に従わなければなりません@Property

もう1つの方法は、列と値のマップを返すことです。Iterable<Map<String,Object>>キーは列の別名で、値は列の値です。

+0

私はクエリ結果を使用しました。それは私のために働いた。ありがとう。 –

0

Luanneが@QueryResultと言ったことは、おそらく行く方法です。

ただし、永続性をビューモデルに変換するための代替パターンが必要な場合は、あなたのドメインモデル(DTOではなく)にスプリングデータneo4jを入力します(この場合、 ReviewRelationshipと呼ばれるもの)。 Spring Data Neo4jでは、このレイヤーにマッピングされているDTOはありません。

次に、DTOに必要なフィールドを選択することができます。ドメインオブジェクトをDTOビルダーに供給するか、Model Mapperのようにシェルフから何かを使用してレンダリングするためにこれを渡すことで、これを自分で行うことができます。

+0

私のために働くqueryResultを使用しました。 –

関連する問題