2017-04-18 43 views
0

我試了一下:薩拉特 - 爲什麼它創建了兩個ID字段

我想圍繞一天半,尚未解決。

我試着通過創建類似MyEntity的MyEntityTemp實體並寫入一個轉換器。即使我得到兩個ID字段。請幫助解決。

我發現一些MyEntity繼承類有id字段,所以我刪除了繼承類,即使我得到同樣的問題。

case class MYEntity (
    @Key("_id") id: String =ObjectId(), 
// id: String, // I tried like this also, even I am getting two ids 
    regionId: String, 
    zoneId: String) 

object ObjectId { 
    def apply(): String = new org.bson.types.ObjectId().toString 
} 

使用: 斯卡拉2.10.5 薩拉特1.9.9 json4s原生3.3.0

錯誤:

需要得到像這個:

{ 
    "_id" : "5411b214ebb290b62281c845", 
} 

但要

{ 
    "_id" : ObjectId("58f5eabb0c7443adcca88e57"), 
    "id" : "5411b214ebb290b62281c845", 
} 

能否請你幫我,爲什麼我收到這樣的。

+0

當你說「得到」你是指在Mongo記錄或生成的JSON。你的代碼中是否有'object ObjectId'?你在那裏的動機是什麼? – noahlz

+0

不在JSON中,我在mongoDB中看到。 –

回答

0

我工作了兩天,並嘗試了多種方式,即使得到同樣的問題。最後我試着用Casbah mongo api來代替Salat。

我構建了一個MongoDBObject,我用_id替換了id字段名並保存在mongoDB中。現在它發生了我的預期。

+0

你能顯示你的代碼嗎? – noahlz

+0

會想知道這個問題和你的答案。您是否理解,即使您的案例類沒有這樣的字段,Mongo也會分配一個名爲_id類型爲「ObjectId」的ID字段? – noahlz

相關問題