首页 > 解决方案 > Spring Data Neo4J @Index(unique = true) 不起作用

问题描述

我想将 User 节点中的 userName 属性设为唯一。我使用了下面的代码,但它没有在 Neo4j 数据库中创建唯一约束。

@Property(name = "name")
@Index(unique = true)
private String usreName;

仅供参考,我使用的是 Neo4j 服务器版本:3.3.6(社区)和 Spring Boot 2。
但是如果我自己在 Neo4j 浏览器中创建一个约束,它就可以工作。

CREATE CONSTRAINT ON (user:User) ASSERT user.userName IS UNIQUE

有没有办法强制 Spring Data Neo4J 创建独特的属性,而不是我自己在数据库中创建它们?

标签: spring-bootneo4jspring-data-neo4j

解决方案


如果您希望应用程序代码创建约束,则需要配置自动索引管理器。您可以在文档中找到最合适的选项: https ://docs.spring.io/spring-data/neo4j/docs/current/reference/html/#reference:indexing:creation

只是关于这个主题的一个注释:想想像 Hibernate 的 DDL 支持这样的自动索引创建。它是开发时的帮手。您不应该在生产环境中使用assertand update,而只能使用validate.


推荐阅读