gpt4 book ai didi

java - Spring-data-neo4j + @Query 抛出 PropertyReferenceException

转载 作者:行者123 更新时间:2023-12-01 12:42:42 24 4
gpt4 key购买 nike

我的 Domain 类有以下存储库:

public interface IDomainRepository extends GraphRepository<Domain>, RelationshipOperationsRepository<Domain>{
//cause of error
@Query("MATCH n WHERE id(n) = {0} SET n :{1}")
public void attachLabel(Long id, String label);

}

GraphManager(一项使用IDomainRepository的服务)中,我调用attachLabel,如下所示:

@Transactional
public void attachLabel(Domain domain, String label){
domainRepository.attachLabel(domain.getId(), label);
}

这是我的 attachLabel 方法的测试用例:

@Test
public void attachLabelSuccess(){

Domain domain = new Domain();
domain.setName(UUID.randomUUID().toString());
domain.setDescription("xyz");

domain = graphManager.create(domain);
graphManager.attachLabel(domain, "DummyLabel");

Domain d1 = domainRepository.findOne(domain.getId());

//Should have [Domain, DummyLabel]
Assert.assertEquals(2, d1.getLabels().size());
}

我收到以下异常,当我运行测试时,它在加载 ApplicationContext 时失败:

Caused by: org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'IDomainRepository':
Invocation of init method failed; nested exception is org.springframework.data.mapping.PropertyReferenceException:
No property attach found for type Domain!
...
Caused by: org.springframework.data.mapping.PropertyReferenceException:
No property attach found for type Domain!
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:75)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:359)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:270)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:241)

似乎SDN正在尝试将attachLabel(附加)的第一部分映射到Domain类的属性。我尝试重命名该方法,但错误仍然出现。

配置:Sprind-Data-Neo4j版本3.1.1.RELEASE,neo4j版本2.1.2。

已修复问题是,我不小心使用了 mongodb 命名空间中的 @Query 注释,而不是 Neo4j。

最佳答案

您无法在 Cypher 中使用参数更新标签。不幸的是这是不可能的。

因此,您必须构建查询并通过 neo4jTemplate 运行它。

关于java - Spring-data-neo4j + @Query 抛出 PropertyReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24956809/

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