gpt4 book ai didi

java - Spring Neo4j 中的唯一索引不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 07:09:36 24 4
gpt4 key购买 nike

我从标题中知道,这听起来像是this question的重复。 ,但我向你保证事实并非如此。事实上,@Indexed(unique=true) 工作正常,因为它的重复项被捕获了!然而,当创建第一个节点时,Spring 实际上以某种方式创建了两个节点。这是我正在做的事情:

@Autowired
private MyEntityRepository repo;

public void testCreate(){
MyEntity me = new MyEntity();
me.setName("somename");
me.setDescription("blah blah");
repo.save(me);
}

@NodeEntity
public class MyEntity{
@GraphId
private Long id;
@Indexed(unique=true)
private String name;
private String description;
}

在空数据库上运行后,将抛出 DataIntegrityViolationException 并创建两个节点。 ID 最低的节点将具有名称和描述字段,但另一个节点将只有名称字段。奇怪的是,两个节点中的名称字段具有相同的值,因此即使抛出异常,它仍然尝试创建该节点。如果我去掉 @Indexed 注释,一切都会正常工作,并且只会创建一个节点(但显然没有重复预防)。

我正在使用独立的 Neo4j 服务器,因为该应用程序的其他几个部分需要能够访问它。但是,我注意到嵌入式 Neo4j 服务器不会发生这种行为。我真的希望 Spring 通过 HTTP 支持这样一个有用的功能,但如果没有,我也不会感到惊讶。有办法让它工作吗?

最佳答案

基于 HTTP 的 Spring Data Neo4j 并不真正使用事务。您使用什么 SDN 版本?

我尝试使用 Neo4j 服务器的独特创建工具,通常可以正常工作。

您能否分享完整的堆栈跟踪,并可能检查服务器日志是否有任何问题。

关于java - Spring Neo4j 中的唯一索引不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20845705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com