したがって、私の問題は、一時データを含むことを意図した生産データベースでのコレクションの自動作成です(ただし、論理的には、この一時ドキュメントで満たされることはありません)。それはなぜですか、どうすればこの動作を回避できますか?
たとえば、より正式な説明として、2 つのデータベースと、それらに含まれるコレクションがあります。
productiveDB.coll1
productiveDB.coll2
と
temporaryDB.col3
temporaryDB.col4
しかし、データの保存を開始すると、Spring が自動的に作成します
productiveDB.coll1
productiveDB.coll2
productiveDB.col3
productiveDB.col4
記録のために:私はすでに1.1.1.RELEASEを使用しています。この動作が繰り返される小さなテストケースを作成しました。両方のドキュメント (MyDocOne と MyDocTwo) には、カスタム フィールドに @Indexed 注釈が含まれており、オブジェクト型のフィールドも含まれています。したがって、エンティティを作成するとmyDocOne and myDocTwo
-設定myDocTwo.obj = myDocOne
して永続化myDocTwo
-春にコレクションmyDocOne
が作成されtemplate2
ます...これは少し混乱します-次のコードがより良い概要を提供することを願っています.
public static void main(String[] args ) {
App app = new App();
ApplicationContextLoader loader = new ApplicationContextLoader();
loader.load(app, "applicationContext.xml");
MongoTemplate template1;
MongoTemplate template2;
try {
template1 = new MongoTemplate(new Mongo("localhost"), "tmp1");
template1.setApplicationContext(loader.getApplicationContext());
template2 = new MongoTemplate(new Mongo("localhost"), "tmp2");
template2.setApplicationContext(loader.getApplicationContext());
MyDocOne one = new MyDocOne("foo", "bar");
template1.save(one);
MyDocTwo two = new MyDocTwo("foo", "baz");
two.setAny(one);
template2.save(two);
} catch (Exception e) {
e.printStackTrace();
}
}
およびドキュメント:
@Document
public class MyDocOne {
@Indexed
String a;
String b;
public MyDocOne(String a, String b) {
super();
this.a = a;
this.b = b;
}
}
@Document
public class MyDocTwo {
@Indexed
String a;
String b;
Object any;
public MyDocOne(String a, String b) {
super();
this.a = a;
this.b = b;
}
public void setAny(Object any) {
this.any = any;
}
}