如何使用索引获取节点

时间:2014-05-11 17:35:27

标签: neo4j spring-data-neo4j

我有一个实体地点:

@NodeEntity
@TypeAlias(value="Place")
public class Place  implements Serializable{
    private static final long serialVersionUID = 1L;
    @GraphId 
    private Long nodeId;

    @JsonProperty("id")
    @Indexed(unique=true)
    private String id;

        //...
}

我尝试以这种方式基于其id属性获取节点:

String pfc = "1234";
(Node)template.getIndex(Place.class, "id").get("id", pfc).getSingle()

但我有这个例外:

java.lang.IllegalStateException: Index name for class java.lang.String id rel: false idx: true must differ from the default name: Place

我必须在索引中添加名称吗? 如果是,我该如何处理现有数据?

1 个答案:

答案 0 :(得分:1)

您使用的是哪个版本?在SDN 3.x中,Neo4j 2.x会自动使用索引和约束。

我会使用PlaceRepository findById()方法。

或者一般来说,访问地点的cypher查询这个:

MATCH (p:Place {id:{id}})-->(x)
RETURN x

您可以使用template.merge()template.findByLabelAndProperty()手动访问它们,我们只会在您知道自己正在做什么时推荐这些内容。