Spring Boot MongoDB-MongoDB无法生成';ID';

Spring Boot MongoDB-MongoDB无法生成';ID';,spring,mongodb,spring-boot,Spring,Mongodb,Spring Boot,我的Spring Boot应用程序有一些问题。 当我在我的存储库中保存一个文档时,应用程序工作正常,但当我保存多个文档时,我的应用程序无法工作。这是我的密码 Article.java import org.springframework.data.annotation.Id; public class Article { @Id private String id; private String title; private String descripti

我的Spring Boot应用程序有一些问题。 当我在我的存储库中保存一个文档时,应用程序工作正常,但当我保存多个文档时,我的应用程序无法工作。这是我的密码

Article.java

import org.springframework.data.annotation.Id;

public class Article {

    @Id
    private String id;

    private String title;
    private String description;

    public Article() {}

    public Article(String title, String description) {
        this.title = title;
        this.description = description;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Override
    public String toString() {
        return "Article{" +
                "id='" + id + '\'' +
                ", title='" + title + '\'' +
                ", description='" + description + '\'' +
                '}';
    }
}
public interface ArticleRepository extends MongoRepository<Article, String> {}
import java.util.HashSet;
import java.util.Set;

@Component
public class DatabaseLoader implements CommandLineRunner {

    @Autowired
    private ArticleRepository articleRepository;

    @Override
    public void run(String... args) throws Exception {
        articleRepository.deleteAll();

        // example 1: if I save one document to my repo everything works fine
        // example: articleRepository.save(new Article("Title 1", "description 1"));
        // console returns: Article{id='596f480e4e118123574a13f1', title='Title 1', description='description 1'}


        // but here is problem
        Set<Article> articleList = new HashSet<Article>(){
            {
                add(new Article("Title 1", "description 1"));
                add(new Article("Title 2", "description 2"));
            }
        };

        // because if I try to save my collection
        articleRepository.save(articleList);

        // console returns: com.mongodb.DuplicateKeyException: 
        // Write failed with error code 11000 and error message 
        // 'insertDocument :: caused by :: 11000 E11000 duplicate key
        // error index: test.article.$user  dup key: { : null }'
        System.out.println(articleRepository.findAll());
    }
}
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(SimpleMongoApplication.class, args);
    }
}
ArticleRepository.java

import org.springframework.data.annotation.Id;

public class Article {

    @Id
    private String id;

    private String title;
    private String description;

    public Article() {}

    public Article(String title, String description) {
        this.title = title;
        this.description = description;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Override
    public String toString() {
        return "Article{" +
                "id='" + id + '\'' +
                ", title='" + title + '\'' +
                ", description='" + description + '\'' +
                '}';
    }
}
public interface ArticleRepository extends MongoRepository<Article, String> {}
import java.util.HashSet;
import java.util.Set;

@Component
public class DatabaseLoader implements CommandLineRunner {

    @Autowired
    private ArticleRepository articleRepository;

    @Override
    public void run(String... args) throws Exception {
        articleRepository.deleteAll();

        // example 1: if I save one document to my repo everything works fine
        // example: articleRepository.save(new Article("Title 1", "description 1"));
        // console returns: Article{id='596f480e4e118123574a13f1', title='Title 1', description='description 1'}


        // but here is problem
        Set<Article> articleList = new HashSet<Article>(){
            {
                add(new Article("Title 1", "description 1"));
                add(new Article("Title 2", "description 2"));
            }
        };

        // because if I try to save my collection
        articleRepository.save(articleList);

        // console returns: com.mongodb.DuplicateKeyException: 
        // Write failed with error code 11000 and error message 
        // 'insertDocument :: caused by :: 11000 E11000 duplicate key
        // error index: test.article.$user  dup key: { : null }'
        System.out.println(articleRepository.findAll());
    }
}
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(SimpleMongoApplication.class, args);
    }
}
你知道我为什么会有这个问题吗?
谢谢您的回答。

好的,这是@Afridi的解决方案

您只需在文档中添加
@Document(collection=“collection name”)
注释。以下是一个例子:

@Document(collection = "articles") // here is solution
public class Article {

    @Id
    private String id;
    private String title;
    private String description;

    //getters, setters and constructor
}

将@Document(collection=“collection name”)添加到POJO,我的意思是文章类噢,天哪,它很管用。谢谢您!