diff --git a/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseDocument.java b/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseDocument.java index 49428c503..483467163 100644 --- a/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseDocument.java +++ b/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseDocument.java @@ -20,6 +20,7 @@ import java.util.TreeMap; import java.util.Map; +import java.util.List; /** * A {@link CouchbaseDocument} is an abstract representation of a document stored inside Couchbase Server. @@ -275,8 +276,14 @@ private void verifyValueType(final Object value) { if (CouchbaseSimpleTypes.DOCUMENT_TYPES.isSimpleType(clazz)) { return; } + + // Special handling for List implementations like Collections.SingletonList and ArrayList + if (value instanceof List) { + return; + } + throw new IllegalArgumentException( - "Attribute of type " + clazz.getCanonicalName() + " cannot be stored and must be converted."); + "Attribute of type " + clazz.getCanonicalName() + " cannot be stored in document and must be converted."); } /** diff --git a/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseList.java b/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseList.java index 7b054edfc..ef547d594 100644 --- a/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseList.java +++ b/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseList.java @@ -200,9 +200,14 @@ private void verifyValueType(final Object value) { if (simpleTypeHolder.isSimpleType(clazz)) { return; } + + // Special handling for List implementations like Collections.SingletonList and ArrayList + if (value instanceof List) { + return; + } throw new IllegalArgumentException( - "Attribute of type " + clazz.getCanonicalName() + " can not be stored and must be converted."); + "Attribute of type " + clazz.getCanonicalName() + " cannot be stored in list and must be converted."); } /**