Spring Boot MongoDB-MongoDB无法生成';ID';
我的Spring Boot应用程序有一些问题。 当我在我的存储库中保存一个文档时,应用程序工作正常,但当我保存多个文档时,我的应用程序无法工作。这是我的密码 Article.javaSpring 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
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,我的意思是文章类噢,天哪,它很管用。谢谢您!