0

2つのクラスを取得しました。1つは@Referenceを使用して別のクラスを参照します。挿入するときは、最初に参照されたクラスを挿入し、後で参照フィールドを持つオブジェクトを挿入します。ほとんどの場合、それらをフェッチするとすべてが正常に機能しますが、次のような例外が発生することがあります

重大:java.lang.RuntimeException:com.google.code.morphia.mapping.MappingException:reference({"$ ref": "UserContactLink"、 "$ id": "50e92481cde5dadc12ff854b"})をネットにフェッチできませんでした。 shisoft.db.obj.UserContact.ucs

IDをチェックインしたところUserContactLink、このIDのドキュメントはありません。これは、前回mongodの進行を終了し、トランザクション(私の視点では)が終了せず、データ関係が破損しているためだと思います。mongodbにはトランザクション機能がないようですが、この問題で何ができますか?

4

1 に答える 1

1
  1. 取引はありません。多くの場合、ドキュメントを再構築して、問題を回避できます(ドキュメントの埋め込みなど)。

  2. 常に最初に参照ドキュメントを挿入する必要があります。挿入時に、MongoDBサーバーはエンティティのObjectIdを作成し、それが参照で使用されます。参照する前にIDを確認することをお勧めします(nullの単純な確認)。

于 2013-01-11T19:13:47.093 に答える