diff --git a/core/src/main/java/org/jdbi/v3/core/internal/IterableLike.java b/core/src/main/java/org/jdbi/v3/core/internal/IterableLike.java index 80b0e3bf2e..8a60f53839 100644 --- a/core/src/main/java/org/jdbi/v3/core/internal/IterableLike.java +++ b/core/src/main/java/org/jdbi/v3/core/internal/IterableLike.java @@ -45,7 +45,7 @@ private IterableLike() { public static boolean isIterable(Object maybeIterable) { return maybeIterable instanceof Iterator || maybeIterable instanceof Iterable - || maybeIterable.getClass().isArray(); + || (maybeIterable != null && maybeIterable.getClass().isArray()); } /** diff --git a/sqlobject/src/test/java/org/jdbi/v3/sqlobject/TestBatching.java b/sqlobject/src/test/java/org/jdbi/v3/sqlobject/TestBatching.java index 8f2d659fb4..bd88f6e4a9 100644 --- a/sqlobject/src/test/java/org/jdbi/v3/sqlobject/TestBatching.java +++ b/sqlobject/src/test/java/org/jdbi/v3/sqlobject/TestBatching.java @@ -67,6 +67,21 @@ public void testInsertSingleIteratorNoTx() { assertThat(b.size()).isEqualTo(2); } + @Test + public void testBindConstantNull() { + UsesBatching b = handle.attach(UsesBatching.class); + List ids = Arrays.asList(1, 2, 3, 4, 5); + + b.withConstantValue(ids, null); + + assertThat(b.size()).isEqualTo(5); + + List names = handle.createQuery("select distinct name from something") + .mapTo(String.class) + .list(); + assertThat(names).containsExactly((String) null); + } + @Test public void testBindConstantValue() { UsesBatching b = handle.attach(UsesBatching.class);