diff --git a/src/main/java/org/springframework/data/mapping/model/PreferredConstructorDiscoverer.java b/src/main/java/org/springframework/data/mapping/model/PreferredConstructorDiscoverer.java index 2f492c728..14a9996f6 100644 --- a/src/main/java/org/springframework/data/mapping/model/PreferredConstructorDiscoverer.java +++ b/src/main/java/org/springframework/data/mapping/model/PreferredConstructorDiscoverer.java @@ -212,7 +212,7 @@ public interface PreferredConstructorDiscoverer type = parameterTypes.get(i); Annotation[] annotations = parameterAnnotations[i]; diff --git a/src/test/kotlin/org/springframework/data/mapping/model/PreferredConstructorDiscovererUnitTests.kt b/src/test/kotlin/org/springframework/data/mapping/model/PreferredConstructorDiscovererUnitTests.kt index b2e52e887..b95ff68d2 100644 --- a/src/test/kotlin/org/springframework/data/mapping/model/PreferredConstructorDiscovererUnitTests.kt +++ b/src/test/kotlin/org/springframework/data/mapping/model/PreferredConstructorDiscovererUnitTests.kt @@ -79,13 +79,27 @@ class PreferredConstructorDiscovererUnitTests { @Suppress("UNCHECKED_CAST") fun `should not resolve constructor for synthetic Kotlin class`() { - val c = Class.forName("org.springframework.data.mapping.model.TypeCreatingSyntheticClassKt") as Class + val c = + Class.forName("org.springframework.data.mapping.model.TypeCreatingSyntheticClassKt") as Class - val constructor = PreferredConstructorDiscoverer.discover(c) + val constructor = + PreferredConstructorDiscoverer.discover(c) assertThat(constructor).isNull() } + @Test // DATACMNS-1800, gh-2215 + @ExperimentalUnsignedTypes + fun `should discover constructor for class using unsigned types`() { + + val constructor = + PreferredConstructorDiscoverer.discover( + UnsignedTypesEntity::class.java + ) + + assertThat(constructor).isNotNull() + } + data class Simple(val firstname: String) class TwoConstructorsWithoutDefault { @@ -111,9 +125,23 @@ class PreferredConstructorDiscovererUnitTests { class DefaultConstructor(val firstname: String = "foo") - class TwoDefaultConstructorsAnnotated(val firstname: String = "foo", val lastname: String = "bar") { + class TwoDefaultConstructorsAnnotated( + val firstname: String = "foo", + val lastname: String = "bar" + ) { @PersistenceConstructor - constructor(firstname: String = "foo", lastname: String = "bar", age: Int) : this(firstname, lastname) + constructor(firstname: String = "foo", lastname: String = "bar", age: Int) : this( + firstname, + lastname + ) } + + @ExperimentalUnsignedTypes + data class UnsignedTypesEntity( + val id: String, + val a: UInt = 5u, + val b: Int = 5, + val c: Double = 1.5 + ) }