Когда я пытаюсь использовать Spring Data JPA и Spring Data MongoDB вместе со SpringBoot, он предполагает, что мои объекты Mongo также имеют объекты JPA и выдают ошибки.
У меня есть объект Person JPA и PersonRepository, который расширяет JpaRepository. И у меня есть User Mongo Entity и UserRepository, которые расширяют MongoRepository.
Когда я запускаю приложение, я получаю следующую ошибку:
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 ответ
Вы должны поместить свои объекты Mongo и JPA в отдельные пакеты (похоже, вы это уже сделали), а затем использовать @EnableMongoRepositories(basePackageClasses=SomeMongoEntity.class)
и @EnableJpaRepositories(basePackageClasses=SomeJpaEntity.class)
, чтобы Spring Data знал, где найти объекты Mongo и JPA соответственно. . Вы можете увидеть эти аннотации в действии в Spring Boot MixedMongoRepositoriesAutoConfigurationTests
.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.