From c689470cac6a85839dba38b6a52d567f9be33f0d Mon Sep 17 00:00:00 2001 From: Mohsin Husen Date: Tue, 5 Mar 2013 13:50:02 +0000 Subject: [PATCH] Enhancement for random Id of elasticsearch if an entity does not have one --- .../elasticsearch/core/ElasticsearchTemplate.java | 12 ++++++++++-- .../MappingElasticsearchEntityInformation.java | 5 ++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java index 91a0a48d5..1999239bb 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -261,8 +261,16 @@ public class ElasticsearchTemplate implements ElasticsearchOperations { String type = isBlank(query.getType())? retrieveTypeFromPersistentEntity(query.getObject().getClass())[0] : query.getType(); - IndexRequestBuilder indexRequestBuilder = client.prepareIndex(indexName,type,query.getId()) - .setSource(objectMapper.writeValueAsString(query.getObject())); + IndexRequestBuilder indexRequestBuilder = null; + + if(query.getId() != null){ + indexRequestBuilder = client.prepareIndex(indexName,type,query.getId()); + }else { + indexRequestBuilder = client.prepareIndex(indexName,type); + } + + indexRequestBuilder.setSource(objectMapper.writeValueAsString(query.getObject())); + if(query.getVersion() != null){ indexRequestBuilder.setVersion(query.getVersion()); indexRequestBuilder.setVersionType(EXTERNAL); diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java index 79c5f528a..b776752d0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java @@ -55,10 +55,13 @@ public class MappingElasticsearchEntityInformation e public ID getId(T entity) { ElasticsearchPersistentProperty id = entityMetadata.getIdProperty(); try { - return (ID) BeanWrapper.create(entity, null).getProperty(id); + if(id != null){ + return (ID) BeanWrapper.create(entity, null).getProperty(id); + } } catch (Exception e) { throw new IllegalStateException("ID could not be resolved", e); } + return null; } @SuppressWarnings("unchecked")