diff --git a/src/main/java/org/springframework/data/redis/core/convert/MappingRedisConverter.java b/src/main/java/org/springframework/data/redis/core/convert/MappingRedisConverter.java
index 549135621..bff2eb4e8 100644
--- a/src/main/java/org/springframework/data/redis/core/convert/MappingRedisConverter.java
+++ b/src/main/java/org/springframework/data/redis/core/convert/MappingRedisConverter.java
@@ -344,6 +344,14 @@ public class MappingRedisConverter implements RedisConverter, InitializingBean {
if (!customConversions.hasCustomWriteTarget(source.getClass())) {
typeMapper.writeType(ClassUtils.getUserClass(source), sink);
}
+
+ if (entity == null) {
+
+ typeMapper.writeType(ClassUtils.getUserClass(source), sink);
+ sink.getBucket().put("_raw", conversionService.convert(source, byte[].class));
+ return;
+ }
+
sink.setKeyspace(entity.getKeySpace());
writeInternal(entity.getKeySpace(), "", source, entity.getTypeInformation(), sink);
diff --git a/src/main/java/org/springframework/data/redis/hash/ConvertingHashMapper.java b/src/main/java/org/springframework/data/redis/hash/ConvertingHashMapper.java
new file mode 100644
index 000000000..a19161aa6
--- /dev/null
+++ b/src/main/java/org/springframework/data/redis/hash/ConvertingHashMapper.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright 2016 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.redis.hash;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+
+import org.springframework.data.redis.core.convert.CustomConversions;
+import org.springframework.data.redis.core.convert.IndexResolver;
+import org.springframework.data.redis.core.convert.IndexedData;
+import org.springframework.data.redis.core.convert.MappingRedisConverter;
+import org.springframework.data.redis.core.convert.RedisData;
+import org.springframework.data.redis.core.convert.ReferenceResolver;
+import org.springframework.data.redis.core.mapping.RedisMappingContext;
+import org.springframework.data.util.TypeInformation;
+
+/**
+ * {@link HashMapper} based on {@link MappingRedisConverter}. Does supports nested properties and simple types like
+ * {@link String}.
+ *
+ *