diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index 1f157e75b..2f73c10eb 100644
--- a/spring-data-mongodb/pom.xml
+++ b/spring-data-mongodb/pom.xml
@@ -317,6 +317,15 @@
test
+
+
+
+ org.jmolecules
+ jmolecules-ddd
+ ${jmolecules}
+ test
+
+
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java
index 87eb56b73..131575789 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java
@@ -22,7 +22,6 @@ import java.util.Set;
import org.bson.types.ObjectId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.data.annotation.Id;
import org.springframework.data.mapping.Association;
import org.springframework.data.mapping.MappingException;
import org.springframework.data.mapping.model.AnnotationBasedPersistentProperty;
@@ -115,7 +114,7 @@ public class BasicMongoPersistentProperty extends AnnotationBasedPersistentPrope
*/
@Override
public boolean isExplicitIdProperty() {
- return isAnnotationPresent(Id.class);
+ return super.isIdProperty();
}
/**
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentPropertyUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentPropertyUnitTests.java
index bbcb8dada..fffa86191 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentPropertyUnitTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentPropertyUnitTests.java
@@ -28,9 +28,9 @@ import java.util.Locale;
import org.bson.Document;
import org.bson.types.ObjectId;
+import org.jmolecules.ddd.annotation.Identity;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-
import org.springframework.core.annotation.AliasFor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mapping.MappingException;
@@ -241,6 +241,15 @@ public class BasicMongoPersistentPropertyUnitTests {
assertThat(property.getFieldType()).isEqualTo(Document.class);
}
+ @Test
+ void considersJMoleculesIdentityExplicitlyAnnotatedIdentifier() {
+
+ MongoPersistentProperty property = getPropertyFor(WithJMoleculesIdentity.class, "identifier");
+
+ assertThat(property.isIdProperty()).isTrue();
+ assertThat(property.isExplicitIdProperty()).isTrue();
+ }
+
private MongoPersistentProperty getPropertyFor(Field field) {
return getPropertyFor(entity, field);
}
@@ -369,4 +378,8 @@ public class BasicMongoPersistentPropertyUnitTests {
@Id @org.springframework.data.mongodb.core.mapping.Field ComplexId id;
}
+
+ static class WithJMoleculesIdentity {
+ @Identity ObjectId identifier;
+ }
}