问题描述
我有一个从BaseDomainObject扩展的域对象,它具有Lombok
批注。
@Data
@EqualsAndHashCode(onlyExplicitlyIncluded = true,callSuper = false)
@Document(collection = "SubmissionApplication")
public class SubmissionApplication extends BaseDomainObject {
@Id
@JsonProperty("applicationId")
@EqualsAndHashCode.Include
private String id;
private ApplicationSource applicationSource;
private String applicationCompletionDate;
}
BaseDomainObject.java
public abstract class BaseDomainObject implements Serializable {
@CreatedBy
private String createdBy;
@CreatedDate
private Date createdDate;
@LastModifiedBy
private String lastModifiedBy;
private String updateDate;
@LastModifiedDate
private Date lastModifiedDate;
@Version
private Integer version;
private String createDate;
private Boolean active = true;
private String updatedBy;
private Integer totalCount;
public BaseDomainObject() {
}
.... getters/setters
}
并且当我尝试repo.save(application)
更新现有文档时,出现异常:
com.mongodb.MongoWriteException: E11000 duplicate key error collection: APP.SubmissionApplication index: _id_ dup key: { _id: ObjectId('5f43aef2e878fb1e0b34aab3') }
at com.mongodb.client.internal.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:1015) ~[mongodb-driver-sync-4.0.4.jar:na]
at com.mongodb.client.internal.MongoCollectionImpl.executeInsertOne(MongoCollectionImpl.java:469) ~[mongodb-driver-sync-4.0.4.jar:na]
at com.mongodb.client.internal.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:452) ~[mongodb-driver-sync-4.0.4.jar:na]
at com.mongodb.client.internal.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:446) ~[mongodb-driver-sync-4.0.4.jar:na]
at org.springframework.data.mongodb.core.MongoTemplate.lambda$insertDocument$15(MongoTemplate.java:1442) ~[spring-data-mongodb-3.0.1.RELEASE.jar:3.0.1.RELEASE]
at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:566) ~[spring-data-mongodb-3.0.1.RELEASE.jar:3.0.1.RELEASE]
at org.springframework.data.mongodb.core.MongoTemplate.insertDocument(MongoTemplate.java:1436) ~[spring-data-mongodb-3.0.1.RELEASE.jar:3.0.1.RELEASE]
at org.springframework.data.mongodb.core.MongoTemplate.doInsert(MongoTemplate.java:1236) ~[spring-data-mongodb-3.0.1.RELEASE.jar:3.0.1.RELEASE]
at org.springframework.data.mongodb.core.MongoTemplate.insert(MongoTemplate.java:1168) ~[spring-data-mongodb-3.0.1.RELEASE.jar:3.0.1.RELEASE]
at org.springframework.data.mongodb.repository.support.SimpleMongoRepository.save(SimpleMongoRepository.java:84) ~[spring-data-mongodb-3.0.1.RELEASE.jar:3.0.1.RELEASE]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at org.springframework.data.repository.core.support.ImplementationInvocationMetadata.invoke(ImplementationInvocationMetadata.java:72) ~[spring-data-commons-2.3.1.RELEASE.jar:2.3.1.RELEASE]
at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:382) ~[spring-data-commons-2.3.1.RELEASE.jar:2.3.1.RELEASE]
如果我删除扩展BaseDomainObject,spring数据mongodb将正确更新文档。
我在做什么错了?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)