2016-10-10 5 views
0

Neo4jOperations#queryForObjects()は、@QueryResult POJOでうまく動作していないようです。常に結果セットは空です。Neo4jOperations#queryForObjectsが@QueryResult POJOで動作するとは思いますか?

Neo4jOperations#queryForObjectsしよう - それは、結果が空であると言う: -

@Test 
public void thisDoesNotWork() { 
    Iterable<ClassNodeIdAndName> result = neo4jOperations.queryForObjects(
      ClassNodeIdAndName.class, 
      "MATCH (c:ClassNode) RETURN ID(c) AS id, c.name AS name", 
      new HashMap<>()); 
    assertTrue(result.iterator().hasNext()); 
} 

Neo4jOperations#queryをしようが結果は空ではありませんと言う:@Query

@Test 
public void thisWorksFine() { 
    Result result = neo4jOperations.query(
      "MATCH (c:ClassNode) RETURN ID(c) AS id, c.name AS name", 
      new HashMap<>()); 
    assertTrue(result.iterator().hasNext()); 
} 

しようとリポジトリ - 結果は空ではありませんと言う:

@Test 
public void thisWorksFineAsWell() { 
    List<ClassNodeIdAndName> classNodeIdsAndNames = classNodeRepository.getAllIdsAndNames(); 
    assertFalse(classNodeIdsAndNames.isEmpty()); 
} 

public interface ClassNodeRepository extends GraphRepository<ClassNode> { 
    @Query("MATCH (c:ClassNode) RETURN ID(c) AS id, c.name AS name") 
    List<ClassNodeIdAndName> getAllIdsAndNames(); 
} 

@QueryResult 
public class ClassNodeIdAndName { 
    public Long id; 
    public String name; 
} 

Documentationとなりますその

反復処理可能queryForObjects(クラスentityType

entityType - 返されるエンティティの種類を表すクラス

しかし、私はタイプを見てする必要があるかどうか混乱していますオブジェクトの場合は、オブジェクトの場合はです。 @QueryResultを処理する予定がない場合は、結果を返さずにスローすると予想されます。

私は4.1.3.RELEASE

答えて

1

@QueryResult春・データのNeo4jを使用しているだけで春Repository Sに適用されるSpring Data Neo4j概念です。

Neo4jOperationsは、Neo4j OGMのクラスSessionクラスの周囲の薄いラッパーであるため、結果クエリー結果オブジェクトを返す概念は処理されません。

も参照してください:SDN 4 Session.query doesn't work for @QueryResult

+0

をまあ、 "薄い" どのように薄いのですか? 'Neo4jOperations'と' JdbcOperations'を比較すると、両方とも薄いラッパーになっていますが、 'JdbcOperations'は' ResultSetExtractor'と 'RowMapper'のような概念を導入しています。私は '@ QueryResult'を使って' Neo4jOperations'とどのように違うのか分かりません。どちらも "データの抽出を容易にするツール"です。 – agibalov

+0

'Neo4jOperations'は' HibernateOperations'や 'JpaOperations'にもっと似ています。前者は旧式の理由のためだけであり、後者はすでに廃止され、Springから削除されています。 'JdbcOperations'のための並列があった場合、それは実際のドライバのためのものです:埋め込まれた、httpとボルト。 – digx1

関連する問題