[英]Spring Data mongoTemplate.save() behaviour
使用mongoTemplate.save()持久保存文檔時,它將破壞數據庫文檔中所有未映射的字段。
例如,您在mongodb中具有文檔集合“ myDocument”:
{
"_id": ObjectId("552402c3186eb112488b45ea"),
"field1": "value1",
"field2": "value2"
}
您的域對象如下所示:
public class MyDocument {
@Id
private String id;
private String field1;
// getter and setter
}
更新文檔后:
MyDocument doc = myDocumentRepository.getById(<some_id>);
doc.setField1("value3");
mongoTemplate.save(doc);
您將在集合中獲得不帶“ field2”的文檔:
{
"_id": ObjectId("552402c3186eb112488b45ea"),
"field1": "value3"
}
它看起來像是意外的行為,當很少有不同的應用程序使用同一數據庫時,它可能是真正的阻止者。
是否可以替代MongoTemplate方法? 任何其他想法將不勝感激。
謝謝。
更新
如@helmy所指出的,這就是mongoTemplate.save()的工作方式,並且首選使用更新方法。 但是在這種情況下,我失去了內置在mongodb映射框架中的生命周期事件。 例如,驗證將不會對更新起作用,因為它由onBeforeSave事件中的偵聽器觸發...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.