2015-07-13 55 views
3

我想定義某種類型的節點之間的某種關係類型。當我查看示例時,他們總是使用字符串來定義關係類型,如in this example。通過使用:如何使用在Neo4j中使用enum RelationshipType?

@RelationshipEntity(type = "ACTED_IN") 

我試圖用org.neo4j.graphdb.RelationshipType但RelationshipEntity.type期望的字符串。

public enum PersonMovieRelationshipType implements RelationshipType { 
    ACTED_IN("ACTED_IN"), 
    AUTHOR("AUTHOR"); 

    private String type; 

    PersonMovieRelationshipType(String type){ 
     this.type = type; 
    } 

    public String getType() { 
     return type; 
    } 
} 

RelationshipType枚舉提供了一個方法「name()」該怎麼做?

我不喜歡自由文本的方式,是否有可能使用枚舉?

任何完整的例子將不勝感激。

Regards

+2

不幸的是枚舉不與對象實例的工作。你也必須爲你的類實現.name()。 –

+2

從理論上說,枚舉是可能的,但是你只能在所有項目中允許一個枚舉在全局範圍內失敗。 –

+0

謝謝你的回答 – bioinfornatics

回答

5

你不能因註解的方式工作。你可以做的是將關係名稱聲明爲常量。

interface RelationNames{ 
    String ACTED_IN = "ACTED_IN"; 
} 

,然後使用這些常量在代碼

@RelationshipEntity(type = RelationNames.ACTED_IN) 
+1

我第二,但我會建議使用最終類與私人默認構造函數,如果它只是目的,如果保持常量... –

+0

@ SamuelKerrien有效的pt,有人認爲它是反模式,但我並不完全相信:) –