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
をまあ、 "薄い" どのように薄いのですか? 'Neo4jOperations'と' JdbcOperations'を比較すると、両方とも薄いラッパーになっていますが、 'JdbcOperations'は' ResultSetExtractor'と 'RowMapper'のような概念を導入しています。私は '@ QueryResult'を使って' Neo4jOperations'とどのように違うのか分かりません。どちらも "データの抽出を容易にするツール"です。 – agibalov
'Neo4jOperations'は' HibernateOperations'や 'JpaOperations'にもっと似ています。前者は旧式の理由のためだけであり、後者はすでに廃止され、Springから削除されています。 'JdbcOperations'のための並列があった場合、それは実際のドライバのためのものです:埋め込まれた、httpとボルト。 – digx1