微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 spring @Query

如何解决使用 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 举报,一经查实,本站将立刻删除。