Spring数据Neo4j 4中的唯一索引

Spring数据Neo4j 4中的唯一索引,spring,indexing,neo4j,spring-data,spring-data-neo4j,Spring,Indexing,Neo4j,Spring Data,Spring Data Neo4j,如何确保唯一性: 对于图实体的属性 用于同时组合多个属性 目前我使用SDN 4.0.0.RC2。我看SDN4现在似乎不支持这个功能(但将来会支持)。我理解对了吗 对于图实体的属性 使用cypher在属性上创建(可能是唯一的)索引: CREATE INDEX ON :Person(name) 唯一索引(又名约束): 从 您可以在引导spring上下文时自动执行此操作: @Component public class IndexCreator { @Autowired Neo

如何确保唯一性:

  • 对于图实体的属性
  • 用于同时组合多个属性
目前我使用SDN 4.0.0.RC2。我看SDN4现在似乎不支持这个功能(但将来会支持)。我理解对了吗

对于图实体的属性

使用cypher在属性上创建(可能是唯一的)索引:

CREATE INDEX ON :Person(name)
唯一索引(又名约束):

您可以在引导spring上下文时自动执行此操作:

@Component
public class IndexCreator {

    @Autowired
    Neo4jTemplate neo4jTemplate;

    @PostConstruct
    public void createIndexes() {
        try {
            neo4jTemplate.execute("CREATE INDEX ON :Person(name)", null);
        } catch (Exception ex) {
            // index already exists?
        }
    }
}
用于同时组合多个属性


这是不直接支持的。您可以将多个属性合并为一个属性,并在该属性上创建索引(同时保持原始属性能够访问它们)。或者(正如Michael所指出的),您可以使用数组属性存储多个值。

谢谢!您能否澄清如何在spring上下文引导期间执行cypher语句?您可以使用数组属性作为复合索引workaround@MichaelHunger你能举一个例子来说明“数组属性”是什么意思吗?它比将多个属性合并为一个属性更好吗?
@Component
public class IndexCreator {

    @Autowired
    Neo4jTemplate neo4jTemplate;

    @PostConstruct
    public void createIndexes() {
        try {
            neo4jTemplate.execute("CREATE INDEX ON :Person(name)", null);
        } catch (Exception ex) {
            // index already exists?
        }
    }
}