我是图形数据库的新手,需要从neo4j 1.9.1迁移到最新版本。我已成功将其配置为使用最新的但在检索嵌套对象/集合时遇到一些困难。
在现有的实施中,属性有@Fetch
个注释,但它不再可用。
当我查询数据库时,它返回正确数量的节点,但这些节点不包含嵌套对象/关系。
例如,我的POJO看起来像这样:
@NodeEntity
public class Category {
@GraphId
Long id;
private String categoryId;
@Index
private String unitId;
@Index
private String companyCategoryCode;
private String companyLabel;
private String supplierId;
@Relationship(type = "CHILD_OF", direction = Relationship.OUTGOING)
private Category parent;
... getters and setters
}
存储库看起来像这样:
public interface CategoryRepository extends GraphRepository<Category> {
@Query(
"MATCH (:ContentViewGroup {token:{token},active:true})-[:ASSOCIATED]-
(:ContentView {active:true})-[r:MAPS_WITH]-(category:Category) "
+ "WHERE r.count > 0 "
+ "RETURN category ")
List<Category> getCategories(@Param("token") String cvGroupToken);
}
我总是在null
课程的parent
对象中获得Category
。
在这方面有任何帮助吗?
注意:我使用的是Neo4j-ogm-api v2.1.6和Spring数据neo4j v4.2.10-RELEASE
答案 0 :(得分:2)
您还必须在密码查询中返回父类别。
例如:
MATCH (:ContentViewGroup {token:{token},active:true})-[:ASSOCIATED]-(:ContentView {active:true})-[r:MAPS_WITH]-(category:Category)-[:CHILD_OF]->(parent:Category) WHERE r.count > 0 RETURN category, parent
SDN / OGM只能为从Neo4j收到的数据创建对象。