java - 无法将 Spring Data MongoDB + Spring DataJPA 与 SpringBoot 一起使用

标签 java spring mongodb jpa spring-boot

当我尝试将 Spring Data JPA 和 Spring Data 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

有解决办法吗?

最佳答案

您应该将您的 Mongo 和 JPA 实体放在单独的包中(看起来您已经这样做了)然后使用 @EnableMongoRepositories(basePackageClasses=SomeMongoEntity.class)@EnableJpaRepositories (basePackageClasses=SomeJpaEntity.class) 以便 Spring Data 知道分别在哪里可以找到 Mongo 和 JPA 实体。您可以在 Spring Boot 的 MixedMongoRepositoriesAutoConfigurationTests 中看到这些注释的作用。 .

关于java - 无法将 Spring Data MongoDB + Spring DataJPA 与 SpringBoot 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25529283/

相关文章:

java - 如果你想用 Java 开发,OpenCV vs ImageJ 选择哪一个?

java - Akka Http解析实体Java

spring - Maven/ Spring : Automatic Test Run of Generated WAR

database - mongodb没有在centOS 7上创建 super 用户?

asp.net-mvc - 如何用MongoDB实现关键字和位置搜索?

node.js - MongoDB:如何存储文件(Word、Excel 等)?

java - 从通用列表java中删除项目?

java - "Premature end of file, org. xml. sax. SAXParseException"异常的原因是什么?

java - 带有cloudera hive jdbc pom问题的Spring引导

java - 如何使用 Spring Data Neo4j 指定查询的深度?