【问题标题】:Unique index in Spring Data Neo4j 4Spring Data Neo4j 4 中的唯一索引
【发布时间】:2015-11-20 11:29:52
【问题描述】:

如何确保唯一性:

  • 图实体的属性?
  • 同时组合多个属性?

目前我使用 SDN 4.0.0.RC2。我偷看the docs,看来SDN 4现在不支持这个功能(但将来会支持)。我理解对了吗?

【问题讨论】:

    标签: spring indexing neo4j spring-data spring-data-neo4j


    【解决方案1】:

    图实体的属性?

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

    CREATE INDEX ON :Person(name)
    

    唯一索引(又名约束):

    CREATE CONSTRAINT ON (p:Person) ASSERT p.name IS UNIQUE
    

    来自http://neo4j.com/docs/stable/query-schema-index.html#schema-index-create-index-on-a-label

    您可以在启动 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 语句?
    • 您可以使用数组属性作为复合索引解决方法
    • @MichaelHunger 你能举个例子说明你的意思,说'数组属性'吗?以及它比将多个属性串联为一个更好吗?
    猜你喜欢
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多