2013-01-11 69 views
0

缺少參考我有兩個類,一個參考另一個通過使用@Reference 當插入我將插入所引用的一個第一和後面插入與參考字段的對象。當我在大多數時間。但有時會接他們 一切正常,我有例外像我MongoDB中與嗎啡

重度:了java.lang.RuntimeException: com.google.code.morphia.mapping.MappingException:參考({ 「$ REF」: 「UserContactLink」, 「$標識」: 「50e92481cde5dadc12ff854b」}) 無法抓取的net.shisoft.db.obj.UserContact.ucs

當我檢查了ID在UserContactLink,並沒有這個文件與此ID。我想這是因爲我終止mongod的最後時間和交易(以我的觀點)的進展情況並沒有結束,數據關係已被損壞。 似乎MongoDB中沒有交易功能,我能做些什麼這個問題?

回答

1
  1. 沒有交易。在很多情況下,你可以調整你的文件,以避免與問題(嵌入文檔,...)

  2. 你總是需要先插入引用文檔。在插入時,MongoDB服務器創建實體的ObjectId,然後在引用中使用它。您可能想在引用之前檢查ID(簡單檢查爲空)。

+0

我不使用嵌入式文檔的一個原因是因爲他們不能被查詢。但是,謝謝。 – Shisoft

+0

嵌入文檔也可以查詢通過點notatiton實際。 http://docs.mongodb.org/manual/core/read-operations/#read-operations-subdocuments – cubbuk