2017-08-26 66 views
0

這是我的SDN 4個實體:SDN4 Neo4j的繼承和索引聲明

@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 SDN4 entity inheritance and indexes)這種方式Neo4j索引:BaseEntity(createDate)將不會被使用因爲我試圖達到D節點:決策標籤。

有什麼辦法在SDN 4定義通過類繼承指數(在BaseEntity級別離開createDate),以便能夠:Decision標籤上使用createDate指數?

回答

1

如果查詢是導出的查找程序那麼它與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}