From 38043d4ea6bce71107afd837eb753cddc1bfdff5 Mon Sep 17 00:00:00 2001 From: Thomas Risberg Date: Thu, 2 Dec 2010 08:18:19 -0500 Subject: [PATCH] fixed mapping of String to ObjectId for '_id' field --- .../data/document/mongodb/SimpleMongoConverter.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/SimpleMongoConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/SimpleMongoConverter.java index ab72b7812..636cadc01 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/SimpleMongoConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/SimpleMongoConverter.java @@ -151,12 +151,14 @@ public class SimpleMongoConverter implements MongoConverter { // if (isSimpleType(pd.getPropertyType())) { Object value = bw.getPropertyValue(pd.getName()); String keyToUse = ("id".equals(pd.getName()) ? "_id" : pd.getName()); - if (isValidProperty(pd)) { // TODO validate Enums... if (value != null && Enum.class.isAssignableFrom(pd.getPropertyType())) { writeValue(dbo, keyToUse, ((Enum)value).name()); } + else if (value != null && "_id".equals(keyToUse) && String.class.isAssignableFrom(pd.getPropertyType())) { + writeValue(dbo, keyToUse, new ObjectId((String)value)); + } else { writeValue(dbo, keyToUse, value); }