DATAMONGO-2339 - Fix QueryMapper field name resolution for properties containing underscore.
We now prevent splitting of paths that contain underscores if the entity contains a property that matches. Original pull request: #777.
This commit is contained in:
committed by
Mark Paluch
parent
564acd75d5
commit
4be53ac952
@@ -26,6 +26,7 @@ import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.bson.BsonValue;
|
||||
import org.bson.Document;
|
||||
@@ -1064,6 +1065,11 @@ public class QueryMapper {
|
||||
private PropertyPath forName(String path) {
|
||||
|
||||
try {
|
||||
|
||||
if (entity.getPersistentProperty(path) != null) {
|
||||
return PropertyPath.from(Pattern.quote(path), entity.getTypeInformation());
|
||||
}
|
||||
|
||||
return PropertyPath.from(path, entity.getTypeInformation());
|
||||
} catch (PropertyReferenceException | InvalidPersistentPropertyPath e) {
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.bson.types.Code;
|
||||
import org.bson.types.ObjectId;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -856,6 +857,15 @@ public class QueryMapperUnitTests {
|
||||
assertThat(document).isEqualTo(new org.bson.Document("nested.unresolvablePath.id", idHex));
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-2339
|
||||
public void findByIdUsesMappedIdFieldNameWithUnderscoreCorrectly() {
|
||||
|
||||
org.bson.Document target = mapper.getMappedObject(new org.bson.Document("with_underscore", "id-1"),
|
||||
context.getPersistentEntity(WithIdPropertyContainingUnderscore.class));
|
||||
|
||||
assertThat(target).isEqualTo(new org.bson.Document("_id", "id-1"));
|
||||
}
|
||||
|
||||
@Document
|
||||
public class Foo {
|
||||
@Id private ObjectId id;
|
||||
@@ -979,4 +989,8 @@ public class QueryMapperUnitTests {
|
||||
static class EntityWithComplexValueTypeList {
|
||||
List<SimpeEntityWithoutId> list;
|
||||
}
|
||||
|
||||
static class WithIdPropertyContainingUnderscore {
|
||||
@Id String with_underscore;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user