Handle Transient Annotation. (#1173)

Closes #1147.

Co-authored-by: mikereiche <michael.reiche@couchbase.com>
This commit is contained in:
Michael Reiche
2021-08-11 11:54:48 -07:00
committed by GitHub
parent ae2217d055
commit e8f04ec479
3 changed files with 25 additions and 0 deletions

View File

@@ -34,6 +34,7 @@ import org.springframework.context.ApplicationContextAware;
import org.springframework.core.CollectionFactory;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.support.DefaultConversionService;
import org.springframework.data.annotation.Transient;
import org.springframework.data.convert.EntityInstantiator;
import org.springframework.data.couchbase.core.mapping.CouchbaseDocument;
import org.springframework.data.couchbase.core.mapping.CouchbaseList;
@@ -532,6 +533,10 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implem
idAttributes.put(order, convertToString(propertyObj));
}
if (prop.isAnnotationPresent(Transient.class)) {
return;
}
if (!conversions.isSimpleType(propertyObj.getClass())) {
writePropertyInternal(propertyObj, target, prop, false);
} else {

View File

@@ -24,6 +24,7 @@ import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.annotation.PersistenceConstructor;
import org.springframework.data.annotation.Transient;
import org.springframework.data.annotation.Version;
import org.springframework.data.couchbase.core.mapping.Document;
@@ -41,6 +42,8 @@ public class User extends ComparableEntity {
@Id private String id;
private String firstname;
private String lastname;
@Transient
private String transientInfo;
@CreatedBy private String createdBy;
@CreatedDate private long createdDate;
@LastModifiedBy private String lastModifiedBy;
@@ -94,4 +97,10 @@ public class User extends ComparableEntity {
return Objects.hash(id, firstname, lastname);
}
public String getTransientInfo(){
return transientInfo;
}
public void setTransientInfo(String something) {
transientInfo = something;
}
}

View File

@@ -29,6 +29,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -222,6 +223,16 @@ public class CouchbaseRepositoryQueryIntegrationTests extends ClusterAwareIntegr
}
}
@Test
public void testTransient() {
User user = new User("1", "Dave", "Wilson");
user.setTransientInfo("something");
userRepository.save(user);
Optional<User> foundUser = userRepository.findById(user.getId());
assertEquals(null, foundUser.get().getTransientInfo());
userRepository.delete(user);
}
@Test
public void testCas() {
User user = new User("1", "Dave", "Wilson");