使用 spring @Query

问题描述

我正在尝试使用 Java SpringReact 对存储在 Neo4j DB 中的方案进行我自己的可视化。要可视化由它的 Id 选择的方案,我需要获取节点和关系的列表。我如何使用 Java SpringCypher 查询来做到这一点?

我试着这样做:

方案实体:

@Node
public class Scheme {
    @Getter @Setter
    @Id
    private Long scheme_id;

    @Getter @Setter
    private String name;

    @Getter @Setter
    private String description;

    @Relationship(type = "CONSISTS_OF",direction = Relationship.Direction.OUTGOING)
    private List<Object> objectList = new ArrayList<>();
}

方案控制器:

@RestController
@RequestMapping("/api/scheme")
@CrossOrigin("*")
public class SchemeController {
    
    @Autowired
    private SchemeService schemeService;

    @GetMapping("/{id}/nodes")
    Mono<List<Node>> getNodesById(@PathVariable Long id) {
        return schemeService.findNodesById(id);
    }
}

用于映射的节点类:

@Getter @Setter
@AllArgsConstructor
@NoArgsConstructor
public class Node {
    
    @Getter @Setter
    private Long identity;

    @Getter @Setter
    private List<String> labels;

    @Getter @Setter
    private Map<String,java.lang.Object> properties;
}

方案服务:

@Service
public class SchemeService {
    @Autowired
    SchemeRepository schemeRepository;

    public Mono<List<Node>> findNodesById(Long id) {
        return schemeRepository.findNodesById(id);
    }
}

方案存储库:

public interface SchemeRepository extends ReactiveNeo4jRepository<Scheme,Long> {
    @Query("MATCH (s:Scheme)-[con:CONSISTS_OF]->(nod1:Object)-[rel:CONNECTED_TO*]-(nod2:Object) WHERE (s.scheme_id=$id) RETURN disTINCT nod1;")
    Mono<List<Node>> findNodesById(Long id);
}

但我明白了:

{
    "identity":null,"labels":null,"properties":null
}

总而言之,当我对节点和关系发出 get 请求时,我想得到这样的列表(我只是使用 Sypher 查询得到的):

{
   "identity":4,"labels":[
      "Object"
   ],"properties":{
      "name":"PC3","obj_id":4,"type":1
   }
},{
   "identity":3,"properties":{
      "name":"PC2","obj_id":3,{
   "identity":2,"properties":{
      "name":"PC1","obj_id":2,"type":1
   }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)