mongoTemplate.save()를 사용하여 문서를 유지하면 데이터베이스 문서의 매핑되지 않은 모든 필드가 삭제됩니다.스프링 데이터 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 메서드를 재정의 할 수 있습니까? 다른 아이디어는 매우 감사하겠습니다.
감사합니다. mongoTemplate.save()가 작동 및 업데이트 방법의 사용이 선호되는 방법
@helmy에서 언급 한 바와 같이 업데이트는
이다. 하지만이 경우에는 mongodb 매핑 프레임 워크에 내장 된 라이프 사이클 이벤트가 손실됩니다. 이 onBeforeSave 이벤트 리스너에 의해 트리거 예를 들어, 검증은 어떻게 save() 작품입니다 ... 갱신에 전혀 예상치 못한 또는 놀라운 일이 아니다
"... 거의 다른 응용 프로그램이 동일한 데이터베이스를 사용하고 있습니다." 나는 그것이 근본적인 건축 문제라고 주장 할 것이다. –
@OliverGierke 예,하지만 일반적인 상황입니다. 슬프게도, 완벽한 세상이 아니기 때문입니다. – Savash