当前位置: 首页 > 知识库问答 >
问题:

Spring数据Neo4J@Index(unique=true)不工作

董良策
2023-03-14

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

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

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

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

有没有一种方法可以强制Spring Data Neo4J创建唯一的属性,而不需要自己在数据库中创建它们?

共有3个答案

周鸿光
2023-03-14

您可以通过应用程序配置自动索引管理器的工作模式。属性

spring.data.neo4j.auto-index=validate # or
# spring.data.neo4j.auto-index=update
# spring.data.neo4j.auto-index=assert

默认模式为none。除此之外,@meistermeier所说的也适用。

另外,Neo4joOperations在SDN 4中被弃用,并在SDN 5中被删除。使用Session代替数据库“附近”的操作。

郁景龙
2023-03-14

在Spring Data Neo4j 4中,索引管理问题完全从映射框架中删除。

(来自Spring Data Neo4j中的索引管理)

@Autowired
private SessionFactory sessionFactory;

@PostConstruct
public void createIndexesAndConstraints() {
    Session session = sessionFactory.openSession();
    Result result = session.query("CREATE INDEX ON :User(userName)", Collections.EMPTY_MAP);
}
韩峰
2023-03-14

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

关于这个主题,请注意:考虑一下像Hibernate的DDL支持这样的自动索引创建。它是开发时的助手。您不应在生产环境中使用断言更新,而应仅使用验证

 类似资料:
  • 我是neo4j spring数据的新手,我尝试执行的查询不是在我的spring boot应用程序上工作,而是在neo4j web界面上工作。 我在数据库上有3个节点:“Oracle”、“Java”和“Cloud”我正在尝试运行的查询: 因此,使用neo4j web界面,如果我输入“CL”,它将返回“Oracle”和“Cloud”,这是正确的。 使用spring数据,我得到了所有3个结果,这是错误的

  • 我是Spring data neo4j的新手,我对GraphRepository有一些错误/问题。 我第一次有了这个: 但是阅读一些文档,存储库已经提供了这样的方法。我不需要写它们。 这是我的产品域名。 这是我的实验班 未检测到查找字节 Id 这正常吗? 这是我的pom.xml

  • 我正在尝试使用Spring-Boot中的注释在java类中为我的集合创建唯一的索引。当我在集合的文档的pojo中的字段上使用时: 其中名称字段包含由英文字母组成的字符串,我想要停止名称字段的重复输入。字段名称不是唯一的,我可以添加具有重复名称字段的文档。要使其工作,我必须使id字段unique=false: 这种方法是否正确,我们是否可以使id字段unique=false并使其他一些字段uniqu

  • 问题内容: 即使将属性设置为,我仍然会插入重复的条目。 我设置了使用定期在。我没有用表 问题答案: 我没有使用JPA创建表 然后,您应该在语句中向表中添加唯一约束,例如,如果您使用的是MySQL:

  • Neo4j 2.0。0已发布。所以我更新了neo4j版本2.0。0.M6到2.0。0.0发布。并尝试在我的网站中更新模型,但出现异常。 组织。springframework。刀。DataIntegrityViolationException:唯一属性类java。lang.String rankStatId rel:false idx:true被设置为重复值3073631_99 MY SDN版本是2

  • 包org.springframework.data.neo4j.annotation中的注释@Query提供了某些计数属性,如CountQuery、CountQueryName。 有人能解释一下这些的用法吗?更具体地说,我写了一个查询来获取关于一个主题的帖子。查询结果将被分页。下面的查询工作正常,并给我的结果。 现在我还需要结果的总数,我是否必须为此编写另一个查询,或者是否有一种方法可以容纳计数查