Java8 和 Spring 数据 Neo4j 应用程序查询

Java8 and Spring Data Neo4j application queries

我有很多关于 Java 8 和 SDN4 的问题。我在 Neo4j v3.0 中创建了一个模型,使用了一些 Cypher 查询,现在开始创建一个 Spring Boot 应用程序。当我开始在 Java 中编码 classes 时,我也开始重新思考我的一些模型。这是我心中的一些问题(我还没有找到解释这个的例子):

  1. 您是否需要将 Java 中的接口与 SDN 一起使用?例如。我会编写一个 Product 接口,然后让我的产品实现它,但在使用标签时是这样实现的吗?
  2. 这在某种程度上与我关于继承的问题有关 - 我通常有一个 ProductFamily,我的 Product 将从中继承。在数据库级别,它被建模为 (:Product)-[PartOf]->(:ProductFamily),但在代码中这些不会是 super/sub class。
  3. 有没有在图形上下文中使用泛型的例子?
  4. 有没有一种方法可以定义节点可以具有的关系及其在 Java 中的方向的约束?

我知道可能没有一个正确的答案,但是网上的资料太少了,希望大家多多指教!

  1. 如果您有一个带有 @NodeEntity 注释的产品界面,那么除了实现 class 上的标签外,您还将拥有 Product 标签,我认为这是你想要的。如果您的接口没有注释,那么您的实现 classes 将不会从它继承标签。

  2. 不确定你的意思 - 如果你说你有一个 Product 继承自的 ProductFamily,但在代码中它不会是 super/sub class? 根据你的图形模型,如果你想要 (:Product)-[PartOf]->(:ProductFamily) 那么你将有一个 Product class 维护对 ProductFamily class 的引用,并且该引用被注释@Relationship。如果 Product class 继承自 ProductFamily 那么坚持 Product 将导致两个标签 - ProductProductFamily 因为 Product IS-A ProductFamily.

  3. 您如何看待自己使用泛型 - 答案真的取决于此。有些案例受支持,有些则不支持(目前不支持的示例是 equivalent of template.createRelationBetween in SDN4

  4. 是的,通过接受 typedirection@Relationship 注释。请注意,此注释仅限制您的域模型,但您可以通过自定义查询在另一个方向上创建关系来很好地蔑视它。