DATAMONGO-602 - Added test case to MongoTemplate tests to verify that querying by BigInteger ids work.
Original pull request: #59.
This commit is contained in:
committed by
Oliver Gierke
parent
58e1d2dbd9
commit
21352a8829
@@ -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<Class<?>>(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<PersonWithIdPropertyOfTypeBigInteger> results1 = template.find(q1, PersonWithIdPropertyOfTypeBigInteger.class);
|
||||
Query q2 = new Query(Criteria.where("firstName").in("Ann", "Mary"));
|
||||
List<PersonWithIdPropertyOfTypeBigInteger> results2 = template.find(q2, PersonWithIdPropertyOfTypeBigInteger.class);
|
||||
Query q3 = new Query(Criteria.where("id").in(new BigInteger("2666666666666666665069473312490162649510603601"),
|
||||
new BigInteger("2666666666666666665069473312490162649510603604")));
|
||||
List<PersonWithIdPropertyOfTypeBigInteger> 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 {
|
||||
|
||||
|
||||
@@ -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 + "]";
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user