2016-05-27 4 views
0

Я пытаюсь использовать функцию dbref с весны.Весна с MongoRepository: 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; 

Класс Пои реализуется различными типами пои (например, культуры). Я хочу ссылаться на pois в моем объекте Tour как на список.

Я делаю POST для хранения poi в моей коллекции pois.

Проблема: когда я выполняю POST в своем туре с ссылкой на objectID-ссылку объекта poi, мой список Poi в турах всегда равен нулю.

Я правильно понял @DBRef, не так ли?

Edit1: Сообщение об ошибке

Проблема заключается в том: Предположим, у вас есть два POIs в базе данных ссылочного с «poi_id_1» и «poi_id_2». Теперь я начинаю вызов API к/туру/добавить следующий массив JSON в нем (другие аргументы) опущен:
"poiList": [{"id": "poi_id_1"}, {"id":"poi_id_2"}]

я получаю 200.

НО: Когда я начинаю запрос на турах, Я получаю "poiList": [null]. (Другие аргументы опущены)

Спасибо за вашу помощь заранее :)

+0

Можете ли вы сказать Whats ошибку? – Pavan

+0

Я не вижу каких-либо ошибок в синтаксисе использования @dbref. – Pavan

ответ

0

Вы не должны использовать db недвижимости в @DBRef как ваш POI проживают в тех же базе данных, и имя коллекции выводятся из вашего объекта домена.

По указанию @DBRef(db="...") вы запрашиваете данные Spring для поиска записей в другой базе данных в целом.

Просто используйте @DBref

+0

Я добавил сообщение об ошибке выше – JavaSchnucki

Смежные вопросы