diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index dbb9510dc..fb25aac2a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -667,7 +667,8 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { MongoPersistentEntity mongoPersistentEntity = getPersistentEntity(entity.getClass()); if (mongoPersistentEntity != null && mongoPersistentEntity.hasVersionProperty()) { - BeanWrapper, Object> wrapper = BeanWrapper.create(entity, null); + BeanWrapper, Object> wrapper = BeanWrapper.create(entity, + this.mongoConverter.getConversionService()); wrapper.setProperty(mongoPersistentEntity.getVersionProperty(), 0); } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java index 81d4413fc..995148535 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java @@ -1485,6 +1485,19 @@ public class MongoTemplateTests { assertThat(person.version, is(1)); } + /** + * @see DATAMONGO-621 + */ + @Test + public void correctlySetsLongVersionProperty() { + + PersonWithVersionPropertyOfTypeLong person = new PersonWithVersionPropertyOfTypeLong(); + person.firstName = "Dave"; + + template.save(person); + assertThat(person.version, is(0L)); + } + static class MyId { String first; diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/PersonWithVersionPropertyOfTypeLong.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/PersonWithVersionPropertyOfTypeLong.java new file mode 100644 index 000000000..a724654ff --- /dev/null +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/PersonWithVersionPropertyOfTypeLong.java @@ -0,0 +1,34 @@ +/* + * Copyright 2012 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.mongodb.core; + +import org.springframework.data.annotation.Version; + +public class PersonWithVersionPropertyOfTypeLong { + + String id; + String firstName; + int age; + + @Version + Long version; + + @Override + public String toString() { + return "PersonWithVersionPropertyOfTypeInteger [id=" + id + ", firstName=" + firstName + ", age=" + age + + ", version=" + version + "]"; + } +}