我有一个模块A,它通过用户,组和相关类提供身份验证。此模块使用org.springframework.data:spring-data-jpa:1.6.0.RELEASE
从数据库访问此数据。值得注意的是,模块A使用通过扩展JpaRepositoryFactoryBean配置的自定义BaseRepository,但删除它不能解决下面的问题。
第二个模块B还有一些要管理的类和存储库,与模块A类无关,再次使用spring-data-jpa
进行存储,但连接到不同的数据库。该项目使用org.springframework.data:spring-data-rest-webmvc:2.1.0.RELEASE
通过REST公开它的存储库。模块B使用模块A中的类来验证用户,但不操纵那些类实例,也不存储任何引用。
我现在遇到的问题是,当模块A不存在时(或者旧版本尚未使用spring-data-jpa),我的模块B REST API可以完美运行,但是当我出现它时打破使用下面的stacktrace创建自引用链接:
java.lang.IllegalArgumentException: Cannot create self link for class Document! No persistent entity found!
at org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler.getSelfLinkFor(PersistentEntityResourceAssembler.java:81) ~[spring-data-rest-webmvc-2.1.0.M1.jar:na]
at org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler.toResource(PersistentEntityResourceAssembler.java:64) ~[spring-data-rest-webmvc-2.1.0.M1.jar:na]
at org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler.toResource(PersistentEntityResourceAssembler.java:32) ~[spring-data-rest-webmvc-2.1.0.M1.jar:na]
at org.springframework.data.web.PagedResourcesAssembler.createResource(PagedResourcesAssembler.java:144) ~[spring-data-commons-1.8.0.M1.jar:na]
at org.springframework.data.web.PagedResourcesAssembler.toResource(PagedResourcesAssembler.java:96) ~[spring-data-commons-1.8.0.M1.jar:na]
at org.springframework.data.rest.webmvc.AbstractRepositoryRestController.entitiesToResources(AbstractRepositoryRestController.java:220) ~[spring-data-rest-webmvc-2.1.0.M1.jar:na]
at org.springframework.data.rest.webmvc.AbstractRepositoryRestController.resultToResources(AbstractRepositoryRestController.java:207) ~[spring-data-rest-webmvc-2.1.0.M1.jar:na]
at org.springframework.data.rest.webmvc.RepositoryEntityController.getCollectionResource(RepositoryEntityController.java:135) ~[spring-data-rest-webmvc-2.1.0.M1.jar:na]
即使我的MappingContext
包含来自模块A和模块B的所有repositoryBeanNames,它看起来正在与RepositoryFactoryBeanSupport
中的错误org.springframework.data.repository.support.Repositories
进行对话。
有没有人知道如何强制使用特定的MappingContext,可能是通过RepositoryRestMvcConfiguration
的扩展?
** 修改 **
这是一个说明问题的GitHub存储库:
https://github.com/timtebeek/dual-data-jpa-rest-webmvc
此后被报告为数据休息项目的错误:
https://jira.spring.io/browse/DATAREST-312
答案 0 :(得分:0)
今天发生在我身上
我试图查询特定的实体
我修复了它创建该类的存储库
在你的情况下,它将是
@Repository
public interface DocumentRepository extends JpaRepository<Document, Long> {
}
还执行所有必需的配置以使用jpa存储库。 Look here
我希望是这样。