我目前正在使用 Spring 和 neo4j 。一个任务是使用 linkurious 显示图表。但是,如何通过 spring-data-neo4j 告诉Spring节点的标签?我需要标签以linkurious为图形着色。如果使用图形存储库中定义的findAll()
,则只返回节点属性?
有什么建议吗?
更新
我尝试使用@QueryResult
,但是回复有问题。更具体一点:
我定义
@QueryResult
public class NodeWithLabel {
GLNode glNode;
ArrayList<String> labels;
}
然后在存储库中,我有
@Query("MATCH (n:GLNode) RETURN n AS glNode, labels(n) as labels")
Collection<NodeWithLabel> getAllNodesWithLabel();
最后,我会得到ArrayList<E>
的结果,因此spring mvc会像[{},{},{},{}]
一样响应空。通常,例如嵌入式findAll()
函数,应该返回LinkedHashSet<E>
,在这种情况下,spring mvc可以发回json响应。
答案 0 :(得分:1)
SDN 4.0不会将节点/关系映射到@QueryResult中的域实体。您发布的代码适用于SDN 4.1
如果你想在SDN 4.0中实现相同的目标,你可以这样做:
@QueryResult
public class NodeWithLabel {
Long id;
Map<String,Object> node;
ArrayList<String> labels;
}
@Query("MATCH (n:GLNode) RETURN ID(n) as id, labels(n) as labels, {properties : n} as node")
Collection<NodeWithLabel> getAllNodesWithLabel();
注意:强烈建议您计划升级到SDN 4.1