diff --git a/src/main/java/org/springframework/data/mapping/model/AnnotationBasedPersistentProperty.java b/src/main/java/org/springframework/data/mapping/model/AnnotationBasedPersistentProperty.java index 2be985377..ad0e0907c 100644 --- a/src/main/java/org/springframework/data/mapping/model/AnnotationBasedPersistentProperty.java +++ b/src/main/java/org/springframework/data/mapping/model/AnnotationBasedPersistentProperty.java @@ -40,6 +40,7 @@ import org.springframework.data.mapping.PersistentProperty; import org.springframework.data.util.ClassTypeInformation; import org.springframework.data.util.Lazy; import org.springframework.data.util.Optionals; +import org.springframework.data.util.ReflectionUtils; import org.springframework.data.util.StreamUtils; import org.springframework.data.util.TypeInformation; import org.springframework.lang.Nullable; @@ -56,6 +57,7 @@ public abstract class AnnotationBasedPersistentProperty
{
private static final String SPRING_DATA_PACKAGE = "org.springframework.data";
+ private static final Class extends Annotation> IDENTITY_TYPE = loadIdentityType();
private final @Nullable String value;
private final Map !isTransient() && !isAnnotationPresent(ReadOnlyProperty.class));
private final Lazy loadIdentityType() {
+
+ return (Class extends Annotation>) ReflectionUtils.loadIfPresent(
+ "org.jmolecules.ddd.annotation.Identity",
+ AbstractPersistentProperty.class.getClassLoader());
+ }
}
diff --git a/src/test/java/org/springframework/data/mapping/model/AnnotationBasedPersistentPropertyUnitTests.java b/src/test/java/org/springframework/data/mapping/model/AnnotationBasedPersistentPropertyUnitTests.java
index 7b4a52a67..913a2e73d 100755
--- a/src/test/java/org/springframework/data/mapping/model/AnnotationBasedPersistentPropertyUnitTests.java
+++ b/src/test/java/org/springframework/data/mapping/model/AnnotationBasedPersistentPropertyUnitTests.java
@@ -28,6 +28,7 @@ import java.util.function.Function;
import java.util.stream.Stream;
import org.assertj.core.api.ClassAssert;
+import org.jmolecules.ddd.annotation.Identity;
import org.jmolecules.ddd.types.AggregateRoot;
import org.jmolecules.ddd.types.Association;
import org.jmolecules.ddd.types.Identifier;
@@ -329,6 +330,14 @@ public class AnnotationBasedPersistentPropertyUnitTests it.equals(ClassTypeInformation.from(Sample.class)));
}
+ @Test // #2438
+ void detectsJMoleculesIdentity() {
+
+ SamplePersistentProperty property = getProperty(JMolecules.class, "identifier");
+
+ assertThat(property.isIdProperty()).isTrue();
+ }
+
@SuppressWarnings("unchecked")
private Map association;
}