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

Spring Data Neo4j存储库组成错误:未找到YYYY类型的属性XXXX

万俟亦
2023-03-14

这应该是一个关于我可能在SpringData文档中遗漏的东西的简单问题。

我正在尝试实现一个存储库扩展,如下所述:http://docs.spring.io/spring-data/data-neo4j/docs/3.0.2.RELEASE/reference/html/programming-model.html#d0e2970.

代码非常简单。我只有一个存储库和一个扩展接口(和实现)。

首先是 MyType 类的存储库:

public interface MyTypeRepository extends 
        GraphRepository<MyType>, MyTypeRepositoryExtension { }

然后扩展接口:

public interface MyTypeRepositoryExtension {
    void anyMethodNameForQuery();
}

及其实施:

public class MyTypeRepositoryExtensionImpl {

     public void anyMethodNameForQuery() {
          //custom query code
     }
 }

使用此代码,Spring Data在其映射基础设施无融资创业时抛出错误:

原因:org.springframework.data.mapping.PropertyReferenceException:找不到MyType类型的任何属性!

根据我对这个错误的理解,任何添加到扩展接口Spring数据的方法都试图映射到相应类型的属性。但是这是库扩展的唯一用途吗?这不是我从文档(上面的链接)中理解的。如果是这样的话,定制查询的替代方案是什么?

最后,我注意到了< code>@Query注释,但是我的用例需要特定的遍历和动态查询组合。

编辑:更多信息

再次查看文档,我发现了一些可能与此相关的信息。为了配置存储库组合,必须从org.example更改存储库扫描路径。存储库org.springframework.data.neo4j。这就是为什么我在MyTypeRepositoryExtension接口SpringData中放置的任何方法都试图映射到MyTypeproperty。

我已经将Spring Data Neo4j存储库扫描路径设置为记录,但是我有许多运行时类未找到错误,例如:java.io.FileNotFoundException:类路径资源[javax/企业/注入/spi/扩展.class]无法打开,因为它不存在“

通过一种尝试和错误的完全随意的方式,我设法找到了一些可以填充缺失类的依赖项。我最终得到了这些依赖关系:

    <dependency>
        <groupId>com.mysema.querydsl</groupId>
        <artifactId>querydsl-core</artifactId>
        <version>3.3.3</version>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>com.mysema.querydsl</groupId>
        <artifactId>querydsl-lucene4</artifactId>
        <version>3.3.3</version>
        <optional>true</optional>
        <exclusions>
            <exclusion>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>com.mysema.querydsl</groupId>
        <artifactId>querydsl-apt</artifactId>
        <version>3.3.3</version>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>1.0-SP1</version>
    </dependency>

这消除了类未找到错误,但现在,由于我更改了存储库路径,Spring无法注入存储库。

文档试图对此说些什么,但我认为,但我无法理解短语中的“把它放在后面”是什么意思(来自文档):“如果你使用

总而言之,我真的需要一些方向:-)…此外,我认为留档需要定义所需的依赖项。并描述如何在项目中混合扩展存储库和标准存储库(仅限接口)。


共有1个答案

隆康平
2023-03-14
匿名用户

我知道一年后答案可能对你没什么用处,但也许可以帮助像我这样的人(见问题)

只要指出你需要改变的两件事:

1)遵循< code>spring-data存储库命名约定,自定义存储库的实现名称必须是< code>EntityRepsitoryImpl(尽管默认sufix Impl可以通过配置进行更改)。因此,您需要将< code > MyTypeRepositoryExtensionImpl 更改为< code > MyTypeRepositoryImpl

2)你不需要改变neo4j: repositories包。org.example.repository很好。不要使用org.springframework.data.neo4j

3) 关于所需的依赖项,如果您不按照第2点所述更改软件包存储库,则只需具备以下基本要素:

  • org.springframework.data.spring-data-neo4j
  • javax.validation.validation-api
  • com.sun.jersey.jersey-客户端

我同意你的观点,即< code>spring-data-neo4j存储库的组成有点混乱,网上很少有好的例子...所以,最后我决定在GitHub上创建一个示例项目,用一个基本的例子来展示我们如何做到这一点。

希望它能在将来帮助其他人。

请参见on < code > GitHub :neo 4 jcustomrepository

 类似资料:
  • 我正在使用,我正在尝试组合存储库以便能够使用自定义存储库。我认为我已经正确地遵循了20.8.7创建存储库和其他类似SO问题中指定的命名约定。 总之,我做错了一些事情,因为我得到了这个 异常消息 用户实体 存储库(都在同一个包中) 服务 新4j配置

  • 我有以下实体: 然后我创建我的存储库: 但我一开始就收到: 未找到MyTable类型的属性getCountOf 我到底做错了什么?

  • 问题内容: 我正在尝试实现自定义Spring存储库。我有界面: 实现: 和“主”存储库,扩展了我的自定义存储库: 根据文档,我正在使用Spring Boot : 运行我的应用程序时,出现以下错误: 问题答案: 这里的问题是你正在创建,但正在中使用它。你需要进行创建才能完成这项工作。 阅读此文档以获取更多详细信息 基本上 Spring Data 2.x更新 此答案是为Spring 1.x编写的。正如

  • 我是Spring Data JPA的新手。我试图为存储库创建一个自定义方法,但是它确实抛出了一个异常。以下是我目前的实现: 这是我启动应用程序时发生的异常(我正在使用 Spring 启动)。

  • 我有一个非常奇怪的问题与和。当我尝试和推动,我得到: 我添加了远程: 有什么想法吗?

  • 我最近开始使用ReactiveCouchbase Repository(sping-data-Couchbase-3.0.0。M2,Spring-引导-启动器-父-2.0.0。M2)在我们的一个项目中。 我从这里引用了未发布的文档并设置了项目,但我得到了以下错误。 以下是关于设置我的项目的相关信息。 @Maven @爪哇 现在,我确实经历了这个和这个,但在这里,我没有在DummyRepositor