0

I have some problem with my Spring Boot application. When I save one document in my repository application works fine, but when I save more than one documents, my aplication not working. Here is my code.

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

Do you know, why I have this problem? Thank you for all your answers.

2
  • 4
    Add @Document(collection = "colletion-name") to POJO, I mean Article class Commented Jul 19, 2017 at 12:12
  • Oh my god, it works. Thank you! Commented Jul 19, 2017 at 12:26

1 Answer 1

1

OK, here is @Afridi's solution.

All you need to do is adding @Document(collection="collection-name") annotation in your document. here is an example:

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

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

    //getters, setters and constructor
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.