2016-05-27 5 views
0

私は春からdbref関数を使用しようとしています。Spring with 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; 

ポイクラスは、POIの異なるタイプ(例えば、培養)によって実現されます。ツアーオブジェクトのポーズをリストとして参照したいと思います。

私はpoisコレクションにpoiを保存するPOSTを行います。

問題:poiオブジェクトのobjectID-referenceを使用してツアーでPOSTを実行すると、ツアーのpoiリストは常にnullです。

私は@DBRefの権利を理解しましたか?

EDIT1:エラーメッセージ

問題がある:あなたが「poi_id_1」と「poi_id_2」で参照されるデータベースに2個のPOIを持っていると仮定します。今私は(他の引数はommited)その中に、次のJSON配列を追加/ /ツアーへのAPI呼び出しを開始します。
"poiList": [{"id": "poi_id_1"}, {"id":"poi_id_2"}]

私は200

を得るしかし:私はツアーでクエリを開始すると、結果として"poiList": [null]が得られます。 (他の引数がommited)事前にあなたの助けを

感謝:)

+0

を使用しますいただきました!エラーを教えてくださいことはできますか? – Pavan

+0

@dbrefを使用する構文でエラーが表示されません。 – Pavan

答えて

0

は、あなたは、同じデータベースであなたのPOIの存在として@DBRefdbプロパティを使用してはならない、とコレクション名は、ドメインオブジェクトから推測されます。

@DBRef(db="...")を指定すると、別のデータベースのエントリを参照するようにSpringデータに要求しています。

単に@DBref

+0

上記のエラーメッセージを追加しました – JavaSchnucki