SDN4 Neo4j 继承和基址索引声明 class

SDN4 Neo4j inheritance and index declaration at base class

这是我的 SDN 4 实体:

@NodeEntity
public abstract class BaseEntity {

    @Index(unique = false)
    private Date createDate;

....

}

@NodeEntity
public class Decision extends BaseEntity {  

....

}

这是:schema输出:

Indexes
   ON :BaseEntity(createDate) ONLINE 

我有以下 Cypher 查询:

MATCH (d:Decision) WHERE d.createDate={createDate}

AFAIK () 这样 Neo4j 索引 :BaseEntity(createDate) 将不会被使用,因为我试图到达 :Decision 标签上的 d 节点。

SDN 4 是否有任何方法通过 class 继承定义索引(将 createDate 保留在 BaseEntity 级别)以便能够使用 createDate 索引在 :Decision 标签上 ?

如果查询是 派生的查找器 那么它与 this issue 相关。现在解决此问题的唯一方法是使用自定义 @Query.

如果查询是自定义的 @Query 您只需要在查询中使用正确的标签,请注意您可以使用多个标签:

MATCH (d:Decision:BaseNode) 
WHERE d.createDate={createDate}

计划者应该足够聪明,可以做正确的事情并使用索引,但是您应该使用 PROFILE 验证这一点。如果不使用 USING INDEX 提示:

MATCH (d:Decision:BaseNode) 
USING INDEX d:BaseNode(createDate)
WHERE d.createDate={createDate}