Spring 节点的唯一约束

Spring 节点的唯一约束,spring,unique,neo4j,unique-constraint,spring-data-neo4j,Spring,Unique,Neo4j,Unique Constraint,Spring Data Neo4j,我使用Spring数据、Neo4j和Jackson来提供JSON API。我有一个简单的用户类,如下所示: @NodeEntity @JsonAutoDetect(JsonMethod.NONE) public class User { @GraphId Long internalId; @Indexed String id; public User() {} public User(String id) { this.id = id;

我使用Spring数据、Neo4j和Jackson来提供JSON API。我有一个简单的用户类,如下所示:

@NodeEntity
@JsonAutoDetect(JsonMethod.NONE)
public class User {
    @GraphId Long internalId;
    @Indexed String id;

    public User() {}

    public User(String id) {
        this.id = id;
    }

    @JsonProperty
    public String getId() {
        return this.id;
    }
}
@Indexed(unique=true) 
我正在使用
@index
来使用URL中的
id
属性。是否有可能将此字段设置为唯一字段?(如在RDBMS中)

现在我可以创建多个具有相同id的用户:

Neo4jTemplate template;
...
template.save(new User("testid"));
template.save(new User("testid"));
我希望第二个
保存
时出现异常,或者至少我希望替换数据库中的第一个用户


谢谢。

可以使用@GraphId吗?

我询问堆栈溢出问题。在同一天。。。这解决了问题,并增加了对唯一索引的支持

只需对字段进行如下注释:

@NodeEntity
@JsonAutoDetect(JsonMethod.NONE)
public class User {
    @GraphId Long internalId;
    @Indexed String id;

    public User() {}

    public User(String id) {
        this.id = id;
    }

    @JsonProperty
    public String getId() {
        return this.id;
    }
}
@Indexed(unique=true) 

似乎
@Graphid
s是自动生成的(并且只有
长的
)。我想自己设置ID。说:“字段的类型应该是长的”,意思是也可以是其他类型^^