Try Object.class if cannot get persistent entity for class. (#1737)
Closes #1726.
This commit is contained in:
committed by
mikereiche
parent
e4e2f466c0
commit
8ea76196ea
@@ -20,6 +20,7 @@ import static org.springframework.data.couchbase.core.mapping.id.GenerationStrat
|
||||
import static org.springframework.data.couchbase.core.mapping.id.GenerationStrategy.USE_ATTRIBUTES;
|
||||
|
||||
import java.beans.Transient;
|
||||
import java.lang.reflect.InaccessibleObjectException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
@@ -982,7 +983,16 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
|
||||
|
||||
private ConvertingPropertyAccessor<Object> getPropertyAccessor(Object source) {
|
||||
|
||||
CouchbasePersistentEntity<?> entity = mappingContext.getRequiredPersistentEntity(source.getClass());
|
||||
CouchbasePersistentEntity<?> entity = null;
|
||||
try {
|
||||
entity = mappingContext.getRequiredPersistentEntity(source.getClass());
|
||||
} catch(InaccessibleObjectException e){
|
||||
try { // punt
|
||||
entity = mappingContext.getRequiredPersistentEntity(Object.class);
|
||||
} catch(Exception ee){
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
PersistentPropertyAccessor<Object> accessor = entity.getPropertyAccessor(source);
|
||||
|
||||
return new ConvertingPropertyAccessor<>(accessor, conversionService);
|
||||
|
||||
@@ -26,8 +26,12 @@ import static org.springframework.data.couchbase.core.query.N1QLExpression.i;
|
||||
import java.time.Instant;
|
||||
import java.time.temporal.TemporalAccessor;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -42,6 +46,7 @@ import org.springframework.data.couchbase.domain.AssessmentDO;
|
||||
import org.springframework.data.couchbase.domain.Config;
|
||||
import org.springframework.data.couchbase.domain.Course;
|
||||
import org.springframework.data.couchbase.domain.NaiveAuditorAware;
|
||||
import org.springframework.data.couchbase.domain.PersonWithMaps;
|
||||
import org.springframework.data.couchbase.domain.Submission;
|
||||
import org.springframework.data.couchbase.domain.User;
|
||||
import org.springframework.data.couchbase.domain.UserJustLastName;
|
||||
@@ -127,6 +132,27 @@ class CouchbaseTemplateQueryIntegrationTests extends JavaIntegrationTests {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void findById() {
|
||||
PersonWithMaps person1 = new PersonWithMaps();
|
||||
person1.setId(UUID.randomUUID().toString());
|
||||
Map<String, Set<String>> versions=new HashMap<>();
|
||||
Set<String> versionSet = new HashSet<>();
|
||||
versionSet.add("1.0");
|
||||
versions.put("v",versionSet);
|
||||
person1.setVersions(versions);
|
||||
Map<String, Map<String, String>> releaseVersions = new HashMap<>();
|
||||
Map<String,String> releaseMap = new HashMap<>();
|
||||
releaseMap.put("1","1");
|
||||
releaseVersions.put("1",releaseMap);
|
||||
person1.setReleaseVersions(releaseVersions);
|
||||
couchbaseTemplate.upsertById(PersonWithMaps.class).one(person1);
|
||||
PersonWithMaps person2 = couchbaseTemplate.findById(PersonWithMaps.class).one(person1.getId());
|
||||
assertEquals(person1, person2);
|
||||
couchbaseTemplate.removeById(PersonWithMaps.class).oneEntity(person1);
|
||||
}
|
||||
|
||||
@Test
|
||||
void findByMatchingQuery() {
|
||||
User user1 = new User(UUID.randomUUID().toString(), "user1", "user1");
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package org.springframework.data.couchbase.domain;
|
||||
|
||||
import com.couchbase.client.core.deps.com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import lombok.Data;
|
||||
import org.springframework.data.annotation.Id;
|
||||
import org.springframework.data.couchbase.core.mapping.Document;
|
||||
import org.springframework.data.couchbase.core.mapping.Field;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@Document
|
||||
public class PersonWithMaps {
|
||||
|
||||
@Id
|
||||
private String id;
|
||||
@Field
|
||||
private Map<String, Set<String>> versions;
|
||||
@Field
|
||||
private Map<String, Map<String,String>> releaseVersions;
|
||||
|
||||
public PersonWithMaps(){
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user