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 3932f4a6d..16a3a05f4 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 @@ -22,6 +22,7 @@ import static org.springframework.data.mongodb.core.query.Criteria.*; import static org.springframework.data.mongodb.core.query.Query.*; import static org.springframework.data.mongodb.core.query.Update.*; +import java.math.BigInteger; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; @@ -112,8 +113,8 @@ public class MongoTemplateTests { mappingContext.setInitialEntitySet(new HashSet>(Arrays.asList(PersonWith_idPropertyOfTypeObjectId.class, PersonWith_idPropertyOfTypeString.class, PersonWithIdPropertyOfTypeObjectId.class, PersonWithIdPropertyOfTypeString.class, PersonWithIdPropertyOfTypeInteger.class, - PersonWithIdPropertyOfPrimitiveInt.class, PersonWithIdPropertyOfTypeLong.class, - PersonWithIdPropertyOfPrimitiveLong.class))); + PersonWithIdPropertyOfTypeBigInteger.class, PersonWithIdPropertyOfPrimitiveInt.class, + PersonWithIdPropertyOfTypeLong.class, PersonWithIdPropertyOfPrimitiveLong.class))); mappingContext.setSimpleTypeHolder(conversions.getSimpleTypeHolder()); mappingContext.initialize(); @@ -142,6 +143,7 @@ public class MongoTemplateTests { template.dropCollection(PersonWithIdPropertyOfTypeObjectId.class); template.dropCollection(PersonWithIdPropertyOfTypeString.class); template.dropCollection(PersonWithIdPropertyOfTypeInteger.class); + template.dropCollection(PersonWithIdPropertyOfTypeBigInteger.class); template.dropCollection(PersonWithIdPropertyOfPrimitiveInt.class); template.dropCollection(PersonWithIdPropertyOfTypeLong.class); template.dropCollection(PersonWithIdPropertyOfPrimitiveLong.class); @@ -478,6 +480,25 @@ public class MongoTemplateTests { assertThat(p9q.getId(), is(p9.getId())); checkCollectionContents(PersonWithIdPropertyOfTypeInteger.class, 1); + /* + * @see DATAMONGO-602 + */ + // BigInteger id - provided + PersonWithIdPropertyOfTypeBigInteger p9bi = new PersonWithIdPropertyOfTypeBigInteger(); + p9bi.setFirstName("Sven_9bi"); + p9bi.setAge(22); + p9bi.setId(BigInteger.valueOf(12345)); + // insert + mongoTemplate.insert(p9bi); + // also try save + mongoTemplate.save(p9bi); + assertThat(p9bi.getId(), notNullValue()); + PersonWithIdPropertyOfTypeBigInteger p9qbi = mongoTemplate.findOne(new Query(where("id").in(p9bi.getId())), + PersonWithIdPropertyOfTypeBigInteger.class); + assertThat(p9qbi, notNullValue()); + assertThat(p9qbi.getId(), is(p9bi.getId())); + checkCollectionContents(PersonWithIdPropertyOfTypeBigInteger.class, 1); + // int id - provided PersonWithIdPropertyOfPrimitiveInt p10 = new PersonWithIdPropertyOfPrimitiveInt(); p10.setFirstName("Sven_10"); @@ -702,6 +723,47 @@ public class MongoTemplateTests { assertThat(results3.size(), is(2)); } + /** + * @see DATAMONGO-602 + */ + @Test + public void testUsingAnInQueryWithBigIntegerId() throws Exception { + + template.remove(new Query(), PersonWithIdPropertyOfTypeBigInteger.class); + + PersonWithIdPropertyOfTypeBigInteger p1 = new PersonWithIdPropertyOfTypeBigInteger(); + p1.setFirstName("Sven"); + p1.setAge(11); + p1.setId(new BigInteger("2666666666666666665069473312490162649510603601")); + template.insert(p1); + PersonWithIdPropertyOfTypeBigInteger p2 = new PersonWithIdPropertyOfTypeBigInteger(); + p2.setFirstName("Mary"); + p2.setAge(21); + p2.setId(new BigInteger("2666666666666666665069473312490162649510603602")); + template.insert(p2); + PersonWithIdPropertyOfTypeBigInteger p3 = new PersonWithIdPropertyOfTypeBigInteger(); + p3.setFirstName("Ann"); + p3.setAge(31); + p3.setId(new BigInteger("2666666666666666665069473312490162649510603603")); + template.insert(p3); + PersonWithIdPropertyOfTypeBigInteger p4 = new PersonWithIdPropertyOfTypeBigInteger(); + p4.setFirstName("John"); + p4.setAge(41); + p4.setId(new BigInteger("2666666666666666665069473312490162649510603604")); + template.insert(p4); + + Query q1 = new Query(Criteria.where("age").in(11, 21, 41)); + List results1 = template.find(q1, PersonWithIdPropertyOfTypeBigInteger.class); + Query q2 = new Query(Criteria.where("firstName").in("Ann", "Mary")); + List results2 = template.find(q2, PersonWithIdPropertyOfTypeBigInteger.class); + Query q3 = new Query(Criteria.where("id").in(new BigInteger("2666666666666666665069473312490162649510603601"), + new BigInteger("2666666666666666665069473312490162649510603604"))); + List results3 = template.find(q3, PersonWithIdPropertyOfTypeBigInteger.class); + assertThat(results1.size(), is(3)); + assertThat(results2.size(), is(2)); + assertThat(results3.size(), is(2)); + } + @Test public void testUsingAnInQueryWithPrimitiveIntId() throws Exception { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/PersonWithIdPropertyOfTypeBigInteger.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/PersonWithIdPropertyOfTypeBigInteger.java new file mode 100644 index 000000000..9f7f76e1a --- /dev/null +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/PersonWithIdPropertyOfTypeBigInteger.java @@ -0,0 +1,57 @@ +/* + * Copyright 2010-2011 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 java.math.BigInteger; + +public class PersonWithIdPropertyOfTypeBigInteger { + + private BigInteger id; + + private String firstName; + + private int age; + + public BigInteger getId() { + return id; + } + + public void setId(BigInteger id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + @Override + public String toString() { + return "PersonWithIdPropertyOfTypeInteger [id=" + id + ", firstName=" + firstName + ", age=" + age + "]"; + } + +}