如何从带有弹簧数据的mongo集合中仅获取指定的对象类

时间:2019-12-27 13:29:30

标签: java mongodb spring-data spring-data-mongodb

我在一个mongo集合中编写了两个类,例如One和Two。在这些类中,我有一个someId字段。然后,我想获取所有具有指定someId的One对象。我创建了一个方法:

Page<One> findBySomeId(String id, Pageable pageable);

但是出现错误:

  

org.springframework.data.mapping.model.MappingInstantiationException:无法实例化...

如我所见,mongo同时获取一个和两个对象,然后尝试根据它们创建一个对象。 我试着写下:

Page<One> findOneBySomeId(String id, Pageable pageable);

,并得到相同的错误。如何编写适当的方法以仅使用Spring数据从mongo DB中检索指定的对象?

3 个答案:

答案 0 :(得分:2)

您的查询应该是这样

module.exports = {
  '@disabled': true, // This will prevent the test module from running.
  'Not running this PAR': function (browser) {
    // > your code here <
  }
};

答案 1 :(得分:0)

您应该通过指定区分OneTwo的内容来限制查询。例如,您可以根据以下条件进行过滤:

  • spring的(内部)_type字段会自动保留,该字段等于完全限定的类名(除非提供@TypeAlias,只要您设置了它即可)
  • 您知道的其他一些属性仅在One文档(Page<One> findBySomeIdAndPropertyExistsTrue(String id, Pageable pageable))中存在

答案 2 :(得分:0)

对于Spring Data,您可以使用以下语法:

One findFirstBySomeId(String someId); 

这里是有关spring数据的文档(4.4.5。限制查询结果),在其中找到说明和示例:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference