如何解决使用 spring @Query
我正在尝试使用 Java Spring 和 React 对存储在 Neo4j DB 中的方案进行我自己的可视化。要可视化由它的 Id 选择的方案,我需要获取节点和关系的列表。我如何使用 Java Spring 和 Cypher 查询来做到这一点?
我试着这样做:
方案实体:
@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 举报,一经查实,本站将立刻删除。