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,有些人认为它是反模式,但我并不完全相信: