这应该是一个关于我可能在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中放置的任何方法都试图映射到MyType
property。
我已经将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)遵循< 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