Cypher查询vs cypher dsl在spring数据neo4j中

时间:2014-04-10 13:35:16

标签: java neo4j cypher spring-data-neo4j dynamicquery

我想知道Spring数据neo4j框架中的neo4j dsl推荐 截至目前,我曾经创建了从GraphRepositoryNamedIndexRepository等扩展的存储库接口,并使用@Query注释自定义cypher查询编写自定义方法,如下所示:

@Query(value="START root=node:__types__(className='com.data.EntityNode') WHERE root.id={0} and "
        + "root.type={1} return root")  
T findByIdAndType(String id, String type);  
就我认为静态查询而言,

上面的方法效果很好。但是现在我需要使用其他方法来根据我的需要生成密码查询!然后我遇到了 neo4j dsl 库,看起来像是我的要求的解决方案 参考:link-1 link-2

我的问题是:

  1. 在Spring数据neo4j中使用neo4j dsl lib是否可以(我使用的是v2.1.0 RELEASE)?或
  2. 有没有其他方法可以在弹簧数据neo4j中为给定的情况生成动态密码查询?
  3. 是否可以从cypher dsl生成查询并将其传递给我的自定义存储库接口,执行它们并获得结果(我的意思是@Query值)?因为如果是,那么我不必在现有设计中添加重大更改。
  4. 由于

2 个答案:

答案 0 :(得分:2)

  1. 更新至3.0.1.RELEASE
  2. 可以使用cypher DSL
  3. 由于注释是编译时间而Cypher DSL是运行时,因此无法在那里使用它们,但是
  4. 您可以从CypherDSLRepository继承,它会为您的存储库添加一些不错的方法

答案 1 :(得分:0)

不是答案,而是一些反馈:

Cypher-DSl https://github.com/neo4j-contrib/cypher-dsl 已于去年重新启动,现在已成为 Spring Data Neo4j 6 不可或缺的一部分。

我们的新文档发现了一个示例:https://docs.spring.io/spring-data/neo4j/docs/6.0.5/reference/html/#faq.custom-queries-and-custom-mappings 从 DSL 构建的所有语句都可以传递给 Neo4j 模板。

我希望有人觉得这很有用。