Spring MongoRepository가 삽입하는 대신 업데이트 중이거나 다시 시작되고 있습니다.
사용 중:
org.springframework.data.mongodb.repository.MongoRepository
빈 DB로 시작하여 다음을 사용하여 개체를 만듭니다._id = 1234
예를 들어, 다른 문자열 필드를 다음으로 설정합니다.hello
예를 들어, 다음을 수행합니다.
repository.save(object);
MondoDB에 문서를 저장합니다.
새 개체를 생성하고 동일하게 설정합니다._id = 1234
그러나 다른 String 필드를 다음으로 설정합니다.world
다른 저장으로 이동합니다.
repository.save(newObject);
결과: 저장은 작동하지만 원래 개체를 업데이트합니다.
예상 결과:이 작업은 실패하고 다음 오류가 발생합니다.DuplicateKeyException
~하듯이_id
고유하며 저장할 때마다 두 개의 개체를 사용합니다.
봄에 결함이 있거나 내가 뭔가 잘못하고 있습니까?
정의에 따라 저장은 업셋 스타일로 개체를 업데이트하고, 있으면 업데이트하고, 없으면 삽입합니다.읽어보기save
MongoDb 웹 사이트의 작업 설명서
mongodb의 삽입 작업은 당신이 예상하는 동작을 가지고 있지만, MongoRepository 문서에서는 삽입이 저장하도록 위임된 것으로 나타나서 아무런 차이가 없습니다.하지만 여러분은 그것이 여러분에게 효과가 있는지 한번 시도해 볼 수 있습니다.그렇지 않으면 인덱스 조회이므로 개체가 있는지 확인하기 전에 get을 수행하면 됩니다.
편집: 저장소 버전을 확인하십시오. insert는 버전 1.7에서 도입되었습니다.
오랜 어려움 끝에 필드 중 하나에 대한 @Id 주석이 있을 때만 애플리케이션이 업데이트됩니다.
@Document(collection="bus")
public class Bus {
// @Indexed(unique=true, direction=IndexDirection.DESCENDING, dropDups=true)
@Id
private String busTitle;
private int totalNoOfSeats;
private int noOfSeatsAvailable;
private String busType;
}
하지만 왠지 @Indexed(unique=true, direction=)를 사용할 수 없었습니다.인덱스 방향.내림차순, dropDups=true)
언급URL : https://stackoverflow.com/questions/29032981/spring-mongorepository-is-updating-or-upserting-instead-of-inserting
'source' 카테고리의 다른 글
Oracle에서 FK 삭제 규칙을 삭제하거나 다시 만들지 않고 변경하시겠습니까? (0) | 2023.07.01 |
---|---|
FCM이 MismatchSenderId를 가져오는 중 (0) | 2023.07.01 |
ORA-01036: C#을 통해 쿼리를 실행할 때 잘못된 변수 이름/번호 (0) | 2023.07.01 |
GetManifestResourceNames를 호출할 때 리소스 이름이 존재하는 동안 GetManifestResourceStream이 null을 반환하는 이유는 무엇입니까? (0) | 2023.07.01 |
패키지 오라클 내부의 모든 프로시저 목록을 가져오는 방법 (0) | 2023.07.01 |