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

无法与springboot一起使用spring数据MongoDB+spring DataJPA

杨征
2023-03-14

当我尝试将Spring Data JPA和spring的数据MongoDB与springboot一起使用时,它假设我的Mongo实体也是JPA实体,并抛出错误。

我有Person JPA实体和扩展了JPARepository的PersonRepository。并且我有用户Mongo实体和扩展MongoRepository的UserRepository。

当我启动应用程序时,我会得到以下错误:

Caused by: java.lang.IllegalArgumentException: Not an managed type: class com.sivalabs.app.mongoentities.User
    at org.hibernate.jpa.internal.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:219)
    at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:68)
    at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getMetadata(JpaEntityInformationSupport.java:65)
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:149)
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:88)
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:68)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:158)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:224)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:210)
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549)
    ... 66 more

这方面有什么办法吗?

共有1个答案

霍鸣
2023-03-14

您应该将Mongo和JPA实体放在单独的包中(看起来您已经这样做了),然后使用@enableMongoRepositories(BasePackageClasses=SomeMongoEntity.class)@enableJparepositories(BasePackageClasses=SomeJpaEntity.class),以便spring数据知道分别在哪里找到Mongo和JPA实体。您可以在spring boot的MixedMongoRepositoriesAutoConfigurationTests中看到这些注释在起作用。

 类似资料:
  • 问题内容: 2 能否从2个不同的mongdb数据库服务器中检索数据? 问题答案: 更新资料 现在可以连接到远程/多个数据库: mongodb url 在哪里,例如(带有数据库名称) 目前,这样做有一个缺点:没有Oplog 旧答案 目前,这是不可能的。每个流星应用程序都绑定到一个数据库。 您可以通过几种方法解决此问题,但其价值可能会更复杂: 一种选择-使用单独的Meteor应用 在另一个流星应用程序

  • 预期行为 当前行为 复制步骤(针对错误) 语境 假设我正在经营一家图书馆,并将书籍出租给其他用户。如果用户从我这里租用书籍,那么他们的存储库中将显示相同的节点详细信息,我将允许他们通过我的应用程序编辑节点实体(如添加关键字、添加书籍的亮点等) 因此,在这两个存储库中,节点详细信息将是相同的。 下面是应用程序。两个Neo4j存储库的属性详细信息。 我的Neo4j存储库详细信息 租用用户的Neo4j存

  • 我是Spring Framework的新手。试图制作一个基于Java的Spring MVC项目。这是我的主要应用程序类 当我运行项目时,我得到了错误 为什么Spring不能显示JSP文件?

  • 问题内容: 我的程序应该等待按下向左或向右箭头键,然后更改一个值,以便下次更新PaintComponent时,屏幕看起来有所不同。但是,运行该程序时,屏幕没有变化。 以下是变量声明: 这是主要的KeyListener声明: 这是用于绘画的方法: 当我运行该程序时,该程序会打印外壳,但是当我按箭头键时,屏幕上没有任何变化。 问题答案: 您需要先将关键侦听器添加到组件,然后才能调用它: 您还需要使组件

  • 问题内容: click事件可以正常运行,但是onmouseover事件不起作用。 问题答案: 您需要大写一些字母。

  • 我不能用HttpEntity调用Spring RestTem板进行POST请求。我调用RestTem板给出Base64字符串在邮递员,但使用我的java实现,它会给出以下错误: 我的实施是: 我尝试过以下解决方案,但在这里不起作用 这个我也提到过这个