@Document在Spring Boot应用程序中未创建集合

问题描述

我有一个简单的spring boot rest应用程序。尝试在Spring Data Mongo db中使用@Document批注创建集合。我知道,如果文档使用@Document注释表示,则spring框架会创建一个集合。

实体

@Document("User")
public class User {
    @Id
    private String Id;
    @Field("firstName")
    @TextIndexed
    private String firstName;
    @Field("lastName")
    @TextIndexed
    private String lastName;
    private String address;

    public String getId() {
        return Id;
    }

    public void setId(String id) {
        Id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

属性

spring.data.mongodb.uri=mongodb://localhost:27017/Order

但是,在rest控制器中,它会在insert命令上创建一个集合,但仍然不会在insert上创建Text-index。

@RestController
public class Controller {
    private MongoTemplate mongoTemplate;

    public Controller(MongoTemplate mongoTemplate) {
        this.mongoTemplate = mongoTemplate;
    }

    @GetMapping("/get")
    public String Get(){
        mongoTemplate.insert(new User());
        return "HelloWorld";
    }
}

控制台中也没有任何错误

控制台

2020-09-03 12:52:00.657  INFO 865 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication on macbooks-MacBook-Air.local with PID 865 (/Users/macbook/Projects/Fete/demo/build/classes/java/main started by macbook in /Users/macbook/Projects/Fete/demo)
2020-09-03 12:52:00.662  INFO 865 --- [           main] com.example.demo.DemoApplication         : No active profile set,falling back to default profiles: default
2020-09-03 12:52:02.676  INFO 865 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data MongoDB repositories in DEFAULT mode.
2020-09-03 12:52:02.712  INFO 865 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 22ms. Found 0 MongoDB repository interfaces.
2020-09-03 12:52:04.106  INFO 865 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2020-09-03 12:52:04.136  INFO 865 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-09-03 12:52:04.137  INFO 865 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.37]
2020-09-03 12:52:04.269  INFO 865 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-09-03 12:52:04.270  INFO 865 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3500 ms
2020-09-03 12:52:04.558  INFO 865 --- [           main] org.mongodb.driver.cluster               : Cluster created with settings {hosts=[localhost:27017],mode=SINGLE,requiredClusterType=UNKNowN,serverSelectionTimeout='30000 ms'}
2020-09-03 12:52:04.692  INFO 865 --- [localhost:27017] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:1,serverValue:9}] to localhost:27017
2020-09-03 12:52:04.731  INFO 865 --- [localhost:27017] org.mongodb.driver.cluster               : Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017,type=STANDALONE,state=CONNECTED,ok=true,minWireversion=0,maxWireversion=8,maxDocumentSize=16777216,logicalSessionTimeoutMinutes=30,roundtripTimeNanos=8577619}
2020-09-03 12:52:06.165  INFO 865 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-09-03 12:52:06.746  INFO 865 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-09-03 12:52:06.764  INFO 865 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 6.69 seconds (JVM running for 13.238)

代码存储库

https://github.com/anandjaisy/mongoDBSpringBoot

解决方法

我必须隐式设置工作

在application.properties文件中

spring.data.mongodb.auto-index-creation=true

或application.yml文件

spring:
  data:
    mongodb:
      auto-index-creation: true

参考-Please use 'MongoMappingContext#setAutoIndexCreation(boolean)' or override 'MongoConfigurationSupport#autoIndexCreation()' to be explicit

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...