我有一个实体地点:
@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
我必须在索引中添加名称吗? 如果是,我该如何处理现有数据?
答案 0 :(得分:1)
您使用的是哪个版本?在SDN 3.x中,Neo4j 2.x会自动使用索引和约束。
我会使用PlaceRepository
findById()
方法。
或者一般来说,访问地点的cypher查询这个:
MATCH (p:Place {id:{id}})-->(x)
RETURN x
您可以使用template.merge()
或template.findByLabelAndProperty()
手动访问它们,我们只会在您知道自己正在做什么时推荐这些内容。