最近做neo4j项目的时候增加了需要用neo4j算法的需求。
项目本身用的是springboot。之前的使用的是Repository请求,因为Repository里支持使用@Query实现自定义cypher,所以随意找了一个已有的Repository加上以下函数:
@Query(value = "CALL gds.louvain.stream({graphName}, { relationshipWeightProperty: 'count' }) YIELD nodeId, communityId, intermediateCommunityIds")
List<Map<String, Object>> louvain(String graphName);
功能是实现了,这点很好。
但是我出现了一个问题,因为每个Repository对应一个实体,也就是neo4j里的一个label。
但是我这个指令显然和任意实体都无关,放在Repository中就显得很奇怪。
而且有些地方使用@Query只能用固定语句传参,不太灵活。
我也试过使用org.neo4j.ogm.session.Session
this.session.query(CommunityResult.class, cypher, new HashMap<String, Object>())
CommunityResult是一个简单的类,有nodeId, communityId, intermediateCommunityIds字段。
这个指令请求节点和关系数据的时候没有问题,但是请求之前的指令时并没有正确的封装出来。
请问有什么比较好的方法