DATAREDIS-875 - Omit MappingRedisConverter type hint for primitive type properties.

We now additionally check if the target property is a primitive type and do no longer add the type hint if so.

Original pull request: #368.
This commit is contained in:
Christoph Strobl
2018-10-25 13:21:23 +02:00
committed by Mark Paluch
parent acd8b6bd4a
commit 713a12bce9
2 changed files with 23 additions and 1 deletions

View File

@@ -298,6 +298,10 @@ public class MappingRedisConverter implements RedisConverter, InitializingBean {
byte[] sourceBytes = source.getBucket().get(currentPath);
if(typeInformation.getType().isPrimitive() && sourceBytes == null) {
return null;
}
if (persistentProperty.isIdProperty() && StringUtils.isEmpty(path.isEmpty())) {
return sourceBytes == null ? fromBytes(sourceBytes, typeInformation.getActualType().getType()) : source.getId();
}
@@ -739,7 +743,7 @@ public class MappingRedisConverter implements RedisConverter, InitializingBean {
Optional<Class<?>> targetType = customConversions.getCustomWriteTarget(value.getClass());
if (!targetType.filter(it -> ClassUtils.isAssignable(Map.class, it)).isPresent()
if (!propertyType.isPrimitive() && !targetType.filter(it -> ClassUtils.isAssignable(Map.class, it)).isPresent()
&& customConversions.isSimpleType(value.getClass()) && value.getClass() != propertyType) {
typeMapper.writeType(value.getClass(), sink.getBucket().getPropertyPath(path));
}