Skip to content

Commit ddc7246

Browse files
authored
Don't update indexed object if it is no persistent entity.
Original Pull Request #1673 Closes #803
1 parent dbd99a3 commit ddc7246

File tree

3 files changed

+23
-20
lines changed

3 files changed

+23
-20
lines changed

Diff for: src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java

+23-18
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@
6666
import org.springframework.data.mapping.PersistentPropertyAccessor;
6767
import org.springframework.data.mapping.callback.EntityCallbacks;
6868
import org.springframework.data.mapping.context.MappingContext;
69-
import org.springframework.data.util.CloseableIterator;
7069
import org.springframework.data.util.Streamable;
7170
import org.springframework.lang.NonNull;
7271
import org.springframework.lang.Nullable;
@@ -95,7 +94,8 @@ protected void initialize(ElasticsearchConverter elasticsearchConverter) {
9594
Assert.notNull(elasticsearchConverter, "elasticsearchConverter must not be null.");
9695

9796
this.elasticsearchConverter = elasticsearchConverter;
98-
MappingContext<? extends ElasticsearchPersistentEntity<?>, ElasticsearchPersistentProperty> mappingContext = this.elasticsearchConverter.getMappingContext();
97+
MappingContext<? extends ElasticsearchPersistentEntity<?>, ElasticsearchPersistentProperty> mappingContext = this.elasticsearchConverter
98+
.getMappingContext();
9999
this.entityOperations = new EntityOperations(mappingContext);
100100
this.routingResolver = new DefaultRoutingResolver((SimpleElasticsearchMappingContext) mappingContext);
101101

@@ -611,25 +611,30 @@ protected List<IndexedObjectInformation> checkForBulkOperationFailure(BulkRespon
611611
}
612612

613613
protected void updateIndexedObject(Object entity, IndexedObjectInformation indexedObjectInformation) {
614-
ElasticsearchPersistentEntity<?> persistentEntity = getRequiredPersistentEntity(entity.getClass());
615-
PersistentPropertyAccessor<Object> propertyAccessor = persistentEntity.getPropertyAccessor(entity);
616-
ElasticsearchPersistentProperty idProperty = persistentEntity.getIdProperty();
617614

618-
// Only deal with text because ES generated Ids are strings!
619-
if (idProperty != null && idProperty.getType().isAssignableFrom(String.class)) {
620-
propertyAccessor.setProperty(idProperty, indexedObjectInformation.getId());
621-
}
615+
ElasticsearchPersistentEntity<?> persistentEntity = elasticsearchConverter.getMappingContext()
616+
.getPersistentEntity(entity.getClass());
622617

623-
if (indexedObjectInformation.getSeqNo() != null && indexedObjectInformation.getPrimaryTerm() != null
624-
&& persistentEntity.hasSeqNoPrimaryTermProperty()) {
625-
ElasticsearchPersistentProperty seqNoPrimaryTermProperty = persistentEntity.getSeqNoPrimaryTermProperty();
626-
propertyAccessor.setProperty(seqNoPrimaryTermProperty,
627-
new SeqNoPrimaryTerm(indexedObjectInformation.getSeqNo(), indexedObjectInformation.getPrimaryTerm()));
628-
}
618+
if (persistentEntity != null) {
619+
PersistentPropertyAccessor<Object> propertyAccessor = persistentEntity.getPropertyAccessor(entity);
620+
ElasticsearchPersistentProperty idProperty = persistentEntity.getIdProperty();
621+
622+
// Only deal with text because ES generated Ids are strings!
623+
if (idProperty != null && idProperty.getType().isAssignableFrom(String.class)) {
624+
propertyAccessor.setProperty(idProperty, indexedObjectInformation.getId());
625+
}
629626

630-
if (indexedObjectInformation.getVersion() != null && persistentEntity.hasVersionProperty()) {
631-
ElasticsearchPersistentProperty versionProperty = persistentEntity.getVersionProperty();
632-
propertyAccessor.setProperty(versionProperty, indexedObjectInformation.getVersion());
627+
if (indexedObjectInformation.getSeqNo() != null && indexedObjectInformation.getPrimaryTerm() != null
628+
&& persistentEntity.hasSeqNoPrimaryTermProperty()) {
629+
ElasticsearchPersistentProperty seqNoPrimaryTermProperty = persistentEntity.getSeqNoPrimaryTermProperty();
630+
propertyAccessor.setProperty(seqNoPrimaryTermProperty,
631+
new SeqNoPrimaryTerm(indexedObjectInformation.getSeqNo(), indexedObjectInformation.getPrimaryTerm()));
632+
}
633+
634+
if (indexedObjectInformation.getVersion() != null && persistentEntity.hasVersionProperty()) {
635+
ElasticsearchPersistentProperty versionProperty = persistentEntity.getVersionProperty();
636+
propertyAccessor.setProperty(versionProperty, indexedObjectInformation.getVersion());
637+
}
633638
}
634639
}
635640

Diff for: src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java

-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,6 @@ public String doIndex(IndexQuery query, IndexCoordinates index) {
148148
IndexRequest request = prepareWriteRequest(requestFactory.indexRequest(query, index));
149149
IndexResponse indexResponse = execute(client -> client.index(request, RequestOptions.DEFAULT));
150150

151-
// We should call this because we are not going through a mapper.
152151
Object queryObject = query.getObject();
153152
if (queryObject != null) {
154153
updateIndexedObject(queryObject, IndexedObjectInformation.of(indexResponse.getId(), indexResponse.getSeqNo(),

Diff for: src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java

-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,6 @@ public String doIndex(IndexQuery query, IndexCoordinates index) {
168168
}
169169
String documentId = response.getId();
170170

171-
// We should call this because we are not going through a mapper.
172171
Object queryObject = query.getObject();
173172
if (queryObject != null) {
174173
updateIndexedObject(queryObject, IndexedObjectInformation.of(documentId, response.getSeqNo(),

0 commit comments

Comments
 (0)