From de76eff758da79640cba664d2cdc0cd85b264058 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bleuse?= Date: Sat, 6 Aug 2022 13:18:11 +0900 Subject: [PATCH 1/2] fixes #1529 --- .../convert/MappingCouchbaseConverter.java | 2 +- .../MappingCouchbaseConverterTests.java | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) 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 8dff2e25f..cc7b511b5 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 @@ -955,7 +955,7 @@ public R getPropertyValue(final CouchbasePersistentProperty property) { Object value = expression != null ? evaluator.evaluate(expression) : source.get(property.getFieldName()); if (property == entity.getIdProperty() && parent == null) { - return (R) source.getId(); + return readValue(source.getId(), property.getTypeInformation(), source); } if (value == null) { return null; diff --git a/src/test/java/org/springframework/data/couchbase/core/mapping/MappingCouchbaseConverterTests.java b/src/test/java/org/springframework/data/couchbase/core/mapping/MappingCouchbaseConverterTests.java index 5af38dbe9..6157dfca5 100644 --- a/src/test/java/org/springframework/data/couchbase/core/mapping/MappingCouchbaseConverterTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/mapping/MappingCouchbaseConverterTests.java @@ -686,6 +686,25 @@ void writesAndReadsDates() { assertThat(read.deleted.truncatedTo(ChronoUnit.MILLIS)).isEqualTo(deleted.truncatedTo(ChronoUnit.MILLIS)); } + @Test + void writesAndReadsIdAsUUID() { + String idAsString = "fc1cc4c4-b7ea-4cb4-b43a-3fb9f574d123"; + UUID id = UUID.fromString(idAsString); + String otherAsString = "fc1cc4c4-b7ea-4cb4-b43a-3fb9f574d456"; + UUID other = UUID.fromString(otherAsString); + + UuidIdEntity entity = new UuidIdEntity(id, other); + + CouchbaseDocument converted = new CouchbaseDocument(); + converter.write(entity, converted); + assertThat(converted.getContent().get("other")).isEqualTo(otherAsString); + assertThat(converted.getId()).isEqualTo(idAsString); + + UuidIdEntity read = converter.read(UuidIdEntity.class, converted); + assertThat(read.id).isEqualTo(id); + assertThat(read.other).isEqualTo(other); + } + @Test void writesAndReadsNestedClass() { CouchbaseDocument converted = new CouchbaseDocument(); @@ -946,6 +965,16 @@ public DateEntity(Date created, Calendar modified, LocalDateTime deleted) { } } + static class UuidIdEntity { + @Id private UUID id; + private UUID other; + + public UuidIdEntity(UUID id, UUID other) { + this.id = id; + this.other = other; + } + } + @Test void idNotGenerated() { class Entity { From 0d28b90eb3d796b040ebcf1233be12e671a4892c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bleuse?= Date: Sat, 6 Aug 2022 13:19:39 +0900 Subject: [PATCH 2/2] add author --- .../data/couchbase/core/convert/MappingCouchbaseConverter.java | 1 + 1 file changed, 1 insertion(+) 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 cc7b511b5..dac2c5c20 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 @@ -81,6 +81,7 @@ * @author Geoffrey Mina * @author Mark Paluch * @author Michael Reiche + * @author Remi Bleuse */ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter implements ApplicationContextAware {