2017-07-19 119 views
0

我的Spring Boot应用程序出现了一些问题。 当我在存储库应用程序中保存一个文档时工作正常,但是当我保存多个文档时,我的应用程序无法正常工作。这是我的代码。Spring Boot MongoDB - MongoDB无法生成'ID'

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 + '\'' + 
       '}'; 
    } 
} 

ArticleRepository.java

public interface ArticleRepository extends MongoRepository<Article, String> {} 

DatabaseLoader.java

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()); 
    } 
} 

Application.java

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); 
    } 
} 

你知道,我为什么会有这个问题? 谢谢你的答案。

+3

添加@Document(集合=“总汇名”),以POJO,我的意思是第三类 – Afridi

+0

哦,我的上帝,它的工作原理。谢谢! – riverside256

回答

0

好的,这里是我的解决方案

您需要做的只是在文档中添加​​注释。这里有一个例子:

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

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

    //getters, setters and constructor 
}