From e8f04ec4791aa4745ee69aabf0973e5b7024e153 Mon Sep 17 00:00:00 2001 From: Michael Reiche <48999328+mikereiche@users.noreply.github.com> Date: Wed, 11 Aug 2021 11:54:48 -0700 Subject: [PATCH] Handle Transient Annotation. (#1173) Closes #1147. Co-authored-by: mikereiche --- .../core/convert/MappingCouchbaseConverter.java | 5 +++++ .../springframework/data/couchbase/domain/User.java | 9 +++++++++ .../CouchbaseRepositoryQueryIntegrationTests.java | 11 +++++++++++ 3 files changed, 25 insertions(+) diff --git a/src/main/java/org/springframework/data/couchbase/core/convert/MappingCouchbaseConverter.java b/src/main/java/org/springframework/data/couchbase/core/convert/MappingCouchbaseConverter.java index 7793be55..306e8a47 100644 --- a/src/main/java/org/springframework/data/couchbase/core/convert/MappingCouchbaseConverter.java +++ b/src/main/java/org/springframework/data/couchbase/core/convert/MappingCouchbaseConverter.java @@ -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 { diff --git a/src/test/java/org/springframework/data/couchbase/domain/User.java b/src/test/java/org/springframework/data/couchbase/domain/User.java index 6fa53f7b..ac2b92d6 100644 --- a/src/test/java/org/springframework/data/couchbase/domain/User.java +++ b/src/test/java/org/springframework/data/couchbase/domain/User.java @@ -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; + } } diff --git a/src/test/java/org/springframework/data/couchbase/repository/CouchbaseRepositoryQueryIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/repository/CouchbaseRepositoryQueryIntegrationTests.java index 669daf0f..ac8d12d1 100644 --- a/src/test/java/org/springframework/data/couchbase/repository/CouchbaseRepositoryQueryIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/repository/CouchbaseRepositoryQueryIntegrationTests.java @@ -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 foundUser = userRepository.findById(user.getId()); + assertEquals(null, foundUser.get().getTransientInfo()); + userRepository.delete(user); + } + @Test public void testCas() { User user = new User("1", "Dave", "Wilson");