当前位置: 首页 > 知识库问答 >
问题:

带有MongoRepository的spring:DBRef

雍兴修
2023-03-14

我正在尝试使用来自spring的dbref函数。

我的代码:

@EnableAutoConfiguration
@RestController
@RequestMapping("/poi")
public class PoiBasicController {
    @Autowired
    private PoiRepository poiRepository;

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public @ResponseBody ResponseEntity<String> add(@RequestBody PointOfInterest poi) {

        poiRepository.insert(poi);

        return ResponseEntity.status(HttpStatus.OK).body(null);
    }

@EnableAutoConfiguration
@RestController
@RequestMapping("/tour")
public class TourController {

    @Autowired
    private TourRepository tourRepository;

    @Autowired
    private PoiRepository poiRepository;

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public @ResponseBody ResponseEntity<String> addTour(@RequestBody Tour tour) {
        tourRepository.insert(tour);
        return ResponseEntity.status(HttpStatus.OK).body(null);
    }

@Document
public class Tour {
    @Id
    private String id;
    private HashMap<String, String> title;
    private HashMap<String, String> description;
    private List<String> images;
    @DBRef(db = "pois")
    private List<PointOfInterest> poiList;

@Document(collection = "pois")
public abstract class PointOfInterest {
    @Id
    private String id;

    private UpperCategory upperCategory;
    private List<String> tags;
    private int priority;
    private List<String> images;
    private LocationWrapper location;
    /*
        Languagekey, description
     */
    private HashMap<String, String> description;

Poi类由不同类型的Poi(例如区域性)实现。我想在我的Tour对象中引用POI作为列表。

我做了一个POST将一个poi存储在我的poi集合中。

问题是:当我用poi对象的objectID-reference在tour上发布一篇文章时,tour中的poi列表总是为空。

我对@dbref的理解是对的,不是吗?

Edit1:错误消息

问题是:假设数据库中有两个POI被“POI_ID_1”和“POI_ID_2”引用。现在我开始一个对/tour/add的API调用,其中包含以下JSON数组(其他参数也包含在内):
“poilist”:[{“id”:“poi_id_1”},{“id”:“poi_id_2”}]

我得了200分。

但是:当我开始对tours进行查询时,得到的结果是“Poilist”:[null]。(提出其他论点)

感谢您提前提供的帮助:)

共有1个答案

颛孙炜
2023-03-14

您不应该使用@dbref中的db属性,因为您的POI驻留在同一个数据库中,并且集合名称是从域对象推断出来的。

通过指定@dbref(db=“...”),您要求spring数据公司在一个完全不同的数据库中查找条目。

只需使用@dbref

 类似资料:
  • 问题内容: 我需要编写一个应用程序,可以使用spring-data和mongodb进行复杂的查询。我一直从使用MongoRepository开始,但是在复杂的查询中苦苦寻找实例或真正理解语法。 我说的是这样的查询: 或使用基于JSON的查询,但由于语法不正确,因此尝试并尝试了它。即使在阅读了文档之后(由于语法错误,仍无法正常工作的示例)。 阅读完所有文档后,似乎mongoTemplate文档要好得

  • 我需要编写一个应用程序,用它我可以使用spring数据和MongoDB进行复杂的查询。我开始使用MongoRepository,但在复杂的查询中很难找到示例或真正理解语法。 我说的是这样的问题: 或者使用基于JSON的查询,因为语法不对,所以我试了一遍又一遍。即使在阅读了mongodb文档之后(由于语法错误,不工作的示例)。 在通读了所有文档之后,似乎的文档要比好得多。我指的是以下文档: http

  • 我正在尝试使用@Query注释从Spring Boot MongoRepository执行一个复杂的GeoQuery。以下是我的文档: 我需要我的查询执行以下任务: null

  • 我有一个MongoDB集合,其中包含以下字段的文档: 日期(日期obj) 我想用MongoRepository编写一个方法来查找日期在一系列日期中的所有文档,并且offerType包含列表中提供的字符串之一 文件: 日期:2019年4月10日,报价类型:报价1 我想要: 日期在9-04-2019和12-04-2019之间 以下优惠:Offer1、offer3 在上一个示例中,我将获得文档1和2。

  • 我正在使用和。 但是,每当我向HotelRepository添加依赖项时,编译器会在com.demo.hotelController中给出错误 为了解决这个错误,我从我的角度检查了所有方面,但都是徒劳的。我研发的东西。 对于将提供一个现成的默认实现。根据Spring文档 我已经用注释了接口,因此不需要将 使用注释从spring上下文添加依赖项,因此它应该从spring上下文中选择已创建的bean。

  • 现在我的问题是,如何在自定义的而不是自定义的中重写方法?我没有在这里公布我的代码,因为它与链接的代码本质上是相同的,只是我需要为子创建一个自定义的来代替,这样它就可以按照“pptang”的答案所述进行正确的度量。 否则,有没有比在第二个RecyclerView中使用1个RecyclerView更好的方法?只能有1个RecyclerView使用上述列表和每个中唯一项的网格填充活动/片段吗?