From 1daf3059ba6b95754745dd0c2863a0ef76c4702a Mon Sep 17 00:00:00 2001 From: Thomas Risberg Date: Tue, 25 Jan 2011 12:01:38 -0500 Subject: [PATCH] fixed bug for handling the case of non-generated keys on inserts --- .../data/document/mongodb/MongoTemplate.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoTemplate.java index e2e6b3ef3..d41d926ac 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/MongoTemplate.java @@ -454,7 +454,14 @@ public class MongoTemplate implements InitializingBean, MongoOperations { List ids = new ArrayList(); for (DBObject dbo : dbDocList) { - ids.add((ObjectId) dbo.get(ID)); + Object id = dbo.get(ID); + if (id instanceof ObjectId) { + ids.add((ObjectId) id); + } + else { + // no id was generated + ids.add(null); + } } return ids; } @@ -672,6 +679,10 @@ public class MongoTemplate implements InitializingBean, MongoOperations { * @param id */ protected void populateIdIfNecessary(Object savedObject, ObjectId id) { + + if (id == null) { + return; + } ConfigurablePropertyAccessor bw = PropertyAccessorFactory.forDirectFieldAccess(savedObject); MongoPropertyDescriptor idDescriptor = new MongoPropertyDescriptors(savedObject.getClass()).getIdDescriptor();