Preserve class keyword as Map key during update mapping.
This commit makes sure to skip the class property ob Object when mapping maps and their keys inside an Update. Closes #3566 Original pull request: #3577.
This commit is contained in:
committed by
Mark Paluch
parent
16818324d8
commit
f5204e859f
@@ -1152,7 +1152,8 @@ public class QueryMapper {
|
||||
|
||||
private boolean isPathToJavaLangClassProperty(PropertyPath path) {
|
||||
|
||||
if (path.getType().equals(Class.class) && path.getLeafProperty().getOwningType().getType().equals(Class.class)) {
|
||||
if ((path.getType() == Class.class || path.getType().equals(Object.class))
|
||||
&& path.getLeafProperty().getType() == Class.class) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -1110,6 +1110,17 @@ class UpdateMapperUnitTests {
|
||||
.isEqualTo("{\"$set\": {\"map.601218778970110001827396.value\": \"testing\"}}");
|
||||
}
|
||||
|
||||
@Test // GH-3566
|
||||
void mapsObjectClassPropertyFieldInMapValueTypeAsKey() {
|
||||
|
||||
Update update = new Update().set("map.class", "value");
|
||||
Document mappedUpdate = mapper.getMappedObject(update.getUpdateObject(),
|
||||
context.getPersistentEntity(EntityWithObjectMap.class));
|
||||
|
||||
assertThat(mappedUpdate)
|
||||
.isEqualTo("{\"$set\": {\"map.class\": \"value\"}}");
|
||||
}
|
||||
|
||||
static class DomainTypeWrappingConcreteyTypeHavingListOfInterfaceTypeAttributes {
|
||||
ListModelWrapper concreteTypeWithListAttributeOfInterfaceType;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user