繁体   English   中英

使用MongoDB进行春季启动-MongoRepository.findAll()错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM