带有MongoRepository:DBRef的java Spring
我正在尝试使用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(例如文化)实现。我想在我的巡更对象列表中引用POI
我在我的poi集合中存储poi
问题是:当我使用poi对象的objectID引用在我的旅行中发布帖子时,我在旅行中的poi列表总是空的
我理解@DBRef是对的,不是吗
Edit1:错误消息
问题是:假设数据库中有两个poi,分别用“poi_id_1”和“poi_id_2”引用。现在,我启动对/tour/add的API调用,其中包含以下JSON数组(其他参数ommited):
"poiList": [{"id": "poi_id_1"}, {"id":"poi_id_2"}]
我得了200分
但是:当我开始查询tours时,结果是"poiList": [null]
。(其他论据不适用)
提前感谢您的帮助:)
# 1 楼答案
您不应该使用
@DBRef
中的db
属性,因为POI位于同一数据库中,并且集合名称是从域对象推断出来的通过指定
@DBRef(db="...")
,您要求Spring数据在不同的数据库中查找所有条目只需使用
@DBref