Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Neo4j中使用enum RelationshipType?_Java_Neo4j_Spring Data Neo4j - Fatal编程技术网

Java 如何在Neo4j中使用enum RelationshipType?

Java 如何在Neo4j中使用enum RelationshipType?,java,neo4j,spring-data-neo4j,Java,Neo4j,Spring Data Neo4j,我想定义一些类型化节点之间的关系类型。当我查看示例时,它们总是使用字符串来定义关系类型,例如。通过使用: @RelationshipEntity(type = "ACTED_IN") 我尝试使用org.neo4j.graphdb.RelationshipType,但RelationshipEntity.type需要字符串 public enum PersonMovieRelationshipType implements RelationshipType { ACTED_IN("ACT

我想定义一些类型化节点之间的关系类型。当我查看示例时,它们总是使用字符串来定义关系类型,例如。通过使用:

@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()”如何处理

我不喜欢自由文本方式,是否可以使用枚举

任何完整的例子都将不胜感激


考虑到注释的工作方式,您不能这样做。您可以做的是将关系名称声明为常量

interface RelationNames{
  String ACTED_IN = "ACTED_IN";
}
然后在代码中使用这些常量

@RelationshipEntity(type = RelationNames.ACTED_IN)

不幸的是,枚举不适用于对象实例。您还必须为类实现.name()。枚举在理论上是可能的,但是您只能在所有项目中全局允许一个枚举,这有点违背了目的。@MichaelHunger此注释仍然有效吗?根据Luane 2016年7月的一篇帖子,“只要你有一个我们可以识别的枚举,这意味着它是用你的域包扫描的,我们会自动将枚举转换为字符串属性,存储在你的节点上,并在你从图中加载实体时将其转换回你的枚举。”()我同意,但我建议使用一个带有默认默认构造函数的最终类,如果只是为了保持常量……@ SamuelKerrien有效PT,有些人认为它是反模式,但我并不完全相信: