我正在嘗試將一個域對象的屬性複製到另一個相似的域對象(基本上將退休數據從存檔集合中移動到活動狀態)。但是,當我嘗試使用手動輸入的id保存時,保存實際上不會將任何內容放入集合中。是否有可能爲grails域對象保存特定的ID?
def item = new Item(style: "631459")
item.id = new ObjectId("537da62d770359c2fb4668e2")
item.save(flush: true, validate: false, failOnError:true)
failOnError不會引發異常,它看起來像保存工作正常。另外,如果我println item.save它將返回正確的ID。我錯在認爲你可以在域對象上放置一個特定的ID嗎?
謝謝你的回答,我懷疑是這樣,但是想確保我沒有過分看起來很傻。 –
不客氣。 @juandiegoh給出的答案也是正確的,但請記住兩件事:i)* new Item(id:...)*將不起作用,因此您手動將* id設置爲* item.setId(.. *)* save()*之前,和ii)現在,您的負擔是強制執行id唯一性。因此,我仍然建議您讓GORM爲您開啓id駕駛。 – mohsenmadi
看起來@DavidB正在使用MongoDB進行存儲,所以id的唯一性不會成爲問題,因爲MongoDB的對象ID始終是唯一的。 –