Исключение «Не удалось найти PersistentEntity для класса типа» в загрузочной Spring MongoRepository - PullRequest
3 голосов
/ 08 мая 2019

Здесь я настроил две базы данных в mongodb.Как описано в этом руководстве ( ссылка ).В общем, я переопределяю реализации MongoDataAutoConfiguration и MongoProperties.

Файл yml свойства:

spring:
  autoconfigure:
       exclude: 
org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration

mongodb:
   primary:
     host: 127.0.0.1
     port: 27017
     database: db_admin_crm
   secondary:
     host: 127.0.0.1
     port: 27017
     database: lead_forms

Класс MultipleMongoProperties:

@Data
@ConfigurationProperties(prefix = "mongodb")
public class MultipleMongoProperties {

 private MongoProperties primary = new MongoProperties();
 private MongoProperties secondary = new MongoProperties();
    //getters and setters
}

Класс MultipleMongoConfig:

@Configuration
@RequiredArgsConstructor
@EnableConfigurationProperties(MultipleMongoProperties.class)
public class MultipleMongoConfig {

@Autowired
private final MultipleMongoProperties mongoProperties;

public MultipleMongoConfig() {
    mongoProperties = null;
}


@Primary
@Bean(name = "primaryMongoTemplate")
public MongoTemplate primaryMongoTemplate() throws Exception {
    return new MongoTemplate(primaryFactory(this.mongoProperties.getPrimary()));
}

@Bean(name = "secondaryMongoTemplate")
public MongoTemplate secondaryMongoTemplate() throws Exception {
    return new MongoTemplate(secondaryFactory(this.mongoProperties.getSecondary()));
}

@Bean
@Primary
public MongoDbFactory primaryFactory(final MongoProperties mongo) throws Exception {
    return new SimpleMongoDbFactory(new MongoClient(mongo.getHost(), mongo.getPort()),
            mongo.getDatabase());
}

@Bean
public MongoDbFactory secondaryFactory(final MongoProperties mongo) throws Exception {
    return new SimpleMongoDbFactory(new MongoClient(mongo.getHost(), mongo.getPort()),
            mongo.getDatabase());
  }
}

PrimaryMongoConfig:

@Configuration
@EnableMongoRepositories(basePackages = "io.crm.service.repositories",
    mongoTemplateRef = "primaryMongoTemplate")
public class PrimaryMongoConfig{
}

SecondaryMongoConfig:

@Configuration
@EnableMongoRepositories(basePackages = "io.crm.service.repositories.report.repositories",
    mongoTemplateRef = "secondaryMongoTemplate")
public class SecondaryMongoConfig {
}

Класс репозитория:

   @RepositoryRestResource(collectionResourceRel = "users",path = "users",excerptProjection = UserProjection.class)
   public interface UserRepository extends MongoRepository<User, String> {

 }

Класс модели пользователя:

@Id
private String id;
private String email;
private String name;
private String businessName;
private String phone;
private String address;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
private Date createdTime;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
private Date updatedTime;
@Field("bookletSignUps")
@DBRef
private List<BookletSignUp> bookletSignUps;
@Field("eventSignUps")
@DBRef
private List<EventSignUp> eventSignUps;
@Field("infoSignUps")
@DBRef
private List<InfoSignUp> infoSignUps;
@Field("webinarSignUps")
@DBRef
private List<WebinarSignUp> webinarSignUps;

Проекция:

@Projection(name = "userExcerpt", types = User.class)
public interface UserProjection {

String getId();
String getName();
String getEmail();
String getBusinessName();
String getPhone();
String getAddress();
Date getCreatedTime();
Date getUpdatedTime();
List<BookletSignUp> getBookletSignUps();
List<EventSignUp> getEventSignUps();
List<InfoSignUp> getInfoSignUps();
List<WebinarSignUp> getWebinarSignUps();

}

Но когда я пытаюсь выполнить GET-запрос к конечной точке REST, http://localhost:9090/users/ я получаю java.lang.IllegalArgumentException: Couldn't find PersistentEntity for type class io.crm.service.models.User! исключение здесь.Что здесь может пойти не так?Идеи будут очень цениться.Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...