@ -33,8 +33,7 @@ import org.bson.types.Code;
import org.bson.types.ObjectId ;
import org.bson.types.ObjectId ;
import org.junit.jupiter.api.BeforeEach ;
import org.junit.jupiter.api.BeforeEach ;
import org.junit.jupiter.api.Test ;
import org.junit.jupiter.api.Test ;
import org.junit.jupiter.api.extension.ExtendWith ;
import org.mockito.junit.jupiter.MockitoExtension ;
import org.springframework.core.convert.converter.Converter ;
import org.springframework.core.convert.converter.Converter ;
import org.springframework.data.annotation.Id ;
import org.springframework.data.annotation.Id ;
import org.springframework.data.annotation.Transient ;
import org.springframework.data.annotation.Transient ;
@ -83,9 +82,12 @@ public class QueryMapperUnitTests {
@BeforeEach
@BeforeEach
void beforeEach ( ) {
void beforeEach ( ) {
MongoCustomConversions conversions = new MongoCustomConversions ( ) ;
this . context = new MongoMappingContext ( ) ;
this . context = new MongoMappingContext ( ) ;
this . context . setSimpleTypeHolder ( conversions . getSimpleTypeHolder ( ) ) ;
this . converter = new MappingMongoConverter ( NoOpDbRefResolver . INSTANCE , context ) ;
this . converter = new MappingMongoConverter ( NoOpDbRefResolver . INSTANCE , context ) ;
this . converter . setCustomConversions ( conversions ) ;
this . converter . afterPropertiesSet ( ) ;
this . converter . afterPropertiesSet ( ) ;
this . mapper = new QueryMapper ( converter ) ;
this . mapper = new QueryMapper ( converter ) ;
@ -1335,6 +1337,25 @@ public class QueryMapperUnitTests {
assertThat ( mappedFields ) . containsEntry ( "_id" , 1 ) ;
assertThat ( mappedFields ) . containsEntry ( "_id" , 1 ) ;
}
}
@Test // GH-3783
void retainsId$InWithStringArray ( ) {
org . bson . Document mappedQuery = mapper . getMappedObject (
org . bson . Document . parse ( "{ _id : { $in: [\"5b8bedceb1e0bfc07b008828\"]}}" ) ,
context . getPersistentEntity ( WithExplicitStringId . class ) ) ;
assertThat ( mappedQuery . get ( "_id" ) ) . isEqualTo ( org . bson . Document . parse ( "{ $in: [\"5b8bedceb1e0bfc07b008828\"]}" ) ) ;
}
@Test // GH-3783
void mapsId$InInToObjectIds ( ) {
org . bson . Document mappedQuery = mapper . getMappedObject (
org . bson . Document . parse ( "{ _id : { $in: [\"5b8bedceb1e0bfc07b008828\"]}}" ) ,
context . getPersistentEntity ( ClassWithDefaultId . class ) ) ;
assertThat ( mappedQuery . get ( "_id" ) )
. isEqualTo ( org . bson . Document . parse ( "{ $in: [ {$oid: \"5b8bedceb1e0bfc07b008828\" } ]}" ) ) ;
}
class WithDeepArrayNesting {
class WithDeepArrayNesting {
List < WithNestedArray > level0 ;
List < WithNestedArray > level0 ;
@ -1404,6 +1425,12 @@ public class QueryMapperUnitTests {
String name ;
String name ;
}
}
class WithExplicitStringId {
@MongoId ( FieldType . STRING ) String id ;
String name ;
}
class BigIntegerId {
class BigIntegerId {
@Id private BigInteger id ;
@Id private BigInteger id ;