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

Spring-data-neo4j@Query抛出PropertyReferenceException

岳浩宕
2023-03-14

我有以下存储库为我的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(attach)的第一部分映射到类的属性。我试图重命名该方法,但仍然出现错误。

配置:Sprind-Data-Neo4j版本3.1.1。发布,neo4j版本2.1.2。

修复问题是,我不小心使用了来自mongob命名空间的@Query注释,而不是od neo4j。

共有1个答案

督冠玉
2023-03-14

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

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

 类似资料:
  • Spring Data Neo4J 提供高级特性,将批注的实体类映射到的 Neo4j 图形数据库。它的模块化编程模型相当于知名的 Spring 模块,建立了与图形交互的基础,并且可用于先进储存库支持。Spring Data Neo4j 是 Spring Data 项目的一部分,目标是向 NoSQL 数据库提供便捷支持。

  • 正在尝试使用远程REST图形数据库配置设置Neo4J。我已经得到了一个本地的嵌入式设置,可以正常工作。唯一的变化是GraphDatabaseService的配置方式。 我使用的是Spring数据Neo4J 3.2。1和Neo4J 2.1。4. 思想? 配置: 这是例外

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

  • Spring Boot启动异常: 调用init方法失败;嵌套异常为java.lang.IllegalArgumentException:无法为方法public abstract void com.unuobi.testboot.Repository.UserRepository.dByAge(int)创建查询!找不到类型User的属性dByAge!

  • 我想将查询的结果分配给DTO对象。DTO如下所示: 查询如下所示: 然而,这没有起作用,因为我得到了以下例外情况:

  • 我知道有一些类似的话题,但没有一个能给出解决方案。那么,如果使用Spring-data-neo4j,有没有办法连接到多个图形?不在同一实例中使用不同标签的图形。 或者等价地,我可以问这个问题: 如何配置spring-data-neo4j,使其在不同端口上与不同的neo4j实例进行多个会话。 谢谢 编辑 感谢@饥饿,我觉得我前进了一步。现在的问题是:如何将sping-data-neo4j划分为多个P