diff --git a/src/main/java/org/springframework/data/couchbase/repository/support/FindMethod.java b/src/main/java/org/springframework/data/couchbase/repository/support/FindMethod.java index 22b37479e..b86c5a7c5 100644 --- a/src/main/java/org/springframework/data/couchbase/repository/support/FindMethod.java +++ b/src/main/java/org/springframework/data/couchbase/repository/support/FindMethod.java @@ -74,6 +74,8 @@ private static Method internalFind(Method[] toTest, String name, Class[] paramet continue; if(params[j] == boolean.class && parameterTypes[j] == Boolean.class ) continue; + if(parameterTypes[j] == null && Object.class.isAssignableFrom(params[j])) // any non-primitive + continue; if (!params[j].isAssignableFrom(parameterTypes[j])) break; } diff --git a/src/test/java/org/springframework/data/couchbase/repository/ReactiveCouchbaseRepositoryQueryIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/repository/ReactiveCouchbaseRepositoryQueryIntegrationTests.java index cda628093..277d4da35 100644 --- a/src/test/java/org/springframework/data/couchbase/repository/ReactiveCouchbaseRepositoryQueryIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/repository/ReactiveCouchbaseRepositoryQueryIntegrationTests.java @@ -19,6 +19,7 @@ import static java.util.Arrays.asList; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -141,7 +142,20 @@ void findBySimpleProperty() { Airport airport1 = reactiveAirportRepository.findById(airports.get(0).getId()).block(); assertEquals(airport1.getIata(), vie.getIata()); Airport airport2 = reactiveAirportRepository.findByIata(airports.get(0).getIata()).block(); - assertEquals(airport1.getId(), vie.getId()); + assertEquals(airport2.getId(), vie.getId()); + } finally { + reactiveAirportRepository.delete(vie).block(); + } + } + + @Test + void testNullParamToDyanmicProxyable() { + Airport vie = null; + try { + vie = new Airport("airports::vie", "vie", "low2"); + reactiveAirportRepository.save(vie).block(); + Airport airport2 = reactiveAirportRepository.withCollection("_default").findByIata(null).block(); + assertNull(airport2); } finally { reactiveAirportRepository.delete(vie).block(); }