diff --git a/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java index 9358f9506..c245524aa 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java @@ -531,11 +531,7 @@ public abstract class AbstractElasticsearchTemplate implements ElasticsearchOper Object id = entityOperations.forEntity(entity, elasticsearchConverter.getConversionService(), routingResolver) .getId(); - if (id != null) { - return stringIdRepresentation(id); - } - - return null; + return convertId(id); } @Nullable diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java index 19e9dc162..42c91c97a 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java @@ -80,13 +80,28 @@ public interface ElasticsearchOperations extends DocumentOperations, SearchOpera * gets the String representation for an id. * * @param id - * @return + * @return String representation * @since 4.0 + * @deprecated since 5.0, use {@link ElasticsearchOperations#convertId(Object)}. */ + @Deprecated @Nullable default String stringIdRepresentation(@Nullable Object id) { return Objects.toString(id, null); } + + /** + * Converts an idValue to a String representation. The default implementation calls + * {@link ElasticsearchConverter#convertId(Object)} + * + * @param idValue the value to convert + * @return the converted value or {@literal null} if idValue is null + * @since 5.0 + */ + @Nullable + default String convertId(@Nullable Object idValue) { + return idValue != null ? getElasticsearchConverter().convertId(idValue) : null; + } // endregion // region routing diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java index 4e75a06fd..24b5d5ea8 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java @@ -313,7 +313,7 @@ public class SimpleElasticsearchRepository implements ElasticsearchReposi } protected @Nullable String stringIdRepresentation(@Nullable ID id) { - return operations.stringIdRepresentation(id); + return operations.convertId(id); } private IndexCoordinates getIndexCoordinates() {