Use getAndTouch only when annotation attribute touchOnRead=true. (#1641)

Closes #1634.
This commit is contained in:
Michael Reiche
2023-01-11 12:43:25 -08:00
committed by GitHub
parent 897d3fc5c2
commit 98bffc0150
2 changed files with 49 additions and 13 deletions

View File

@@ -182,13 +182,12 @@ public class ReactiveFindByIdOperationSupport implements ReactiveFindByIdOperati
CommonOptions<?> getOptions;
final CouchbasePersistentEntity<?> entity = template.getConverter().getMappingContext()
.getRequiredPersistentEntity(domainType);
Duration entityExpiryAnnotation = entity.getExpiryDuration();
if (expiry != null || entityExpiryAnnotation == null || !entityExpiryAnnotation.isZero()
|| options instanceof GetAndTouchOptions) {
Boolean isTouchOnRead = entity.isTouchOnRead();
if (expiry != null || isTouchOnRead || options instanceof GetAndTouchOptions) {
if (expiry != null) {
expiryToUse = expiry;
} else if (entityExpiryAnnotation == null || !entityExpiryAnnotation.isZero()) {
expiryToUse = entityExpiryAnnotation;
} else if (isTouchOnRead) {
expiryToUse = entity.getExpiryDuration();
} else {
expiryToUse = Duration.ZERO;
}
@@ -209,7 +208,7 @@ public class ReactiveFindByIdOperationSupport implements ReactiveFindByIdOperati
}
return getOptions;
}
}
}