![](/img/trans.png)
[英]Spring Boot MongoRepository findAll() returns empty array
[英]Spring boot with MongoDB - MongoRepository.findAll() error
Spring boot 1.5.10
MongoDB 3.4.3
Java 1.8
我是MongoDB的新手,并且正在遵循本指南: 使用MongoDB访问数据
从本质上讲,我创建了一个Post类,并将Comments列表作为属性。
Comment.java
public class Comment {
@Id
private String id;
private String author;
private String text;
... constructor, getter and setter
Post.java
public class Post {
@Id
private String id;
private String author;
private String title;
private String text;
private long like;
private List<Comment> comments;
... constructor, getter and setter
PostRepository.java
public interface PostRepository extends MongoRepository<Post, String> {
}
主应用
@SpringBootApplication
@EnableWebMvc
public class PostRestApplication implements CommandLineRunner{
@Autowired
private PostRepository postRepository;
public static void main(String[] args) {
SpringApplication.run(PostRestApplication.class, args);
}
@Override
public void run(String... arg0) throws Exception {
postRepository.deleteAll(); //works
List<Comment> comments = new ArrayList<>();
comments.add(new Comment("1", "Tom", "test"));
postRepository.save(new Post("2", "Clark", "title",
"test", 2, comments)); //works, write on db
for(Post post:postRepository.findAll()){ //get error on findAll()
System.out.println(post.toString());
}
}
}
但是,当我运行该应用程序时,在MongoRepository.findAll()执行时出现此错误:
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_112]
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:513) ~[spring-data-commons-1.13.10.RELEASE.jar:na]
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:488) ~[spring-data-commons-1.13.10.RELEASE.jar:na]
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:475) ~[spring-data-commons-1.13.10.RELEASE.jar:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:56) ~[spring-data-commons-1.13.10.RELEASE.jar:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) ~[spring-aop-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:57) ~[spring-data-commons-1.13.10.RELEASE.jar:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) ~[spring-aop-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at com.sun.proxy.$Proxy62.findAll(Unknown Source) ~[na:na]
at com.example.postRest.repository.impl.PostRepositoryImpl.findAll(PostRepositoryImpl.java:24) ~[classes/:na]
at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_112]
您应该使用DBCursor及其中的find()方法来查找集合中的所有文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.