diff --git a/core/src/main/java/org/jdbi/v3/core/result/ResultIterable.java b/core/src/main/java/org/jdbi/v3/core/result/ResultIterable.java index d5e66cfe8e..89c32cbfa4 100644 --- a/core/src/main/java/org/jdbi/v3/core/result/ResultIterable.java +++ b/core/src/main/java/org/jdbi/v3/core/result/ResultIterable.java @@ -280,7 +280,7 @@ default List list() { * @param the generic type of the container * @return the container with the query result */ - default R collect(Collector collector) { + default R collect(Collector collector) { try (Stream stream = stream()) { return stream.collect(collector); } diff --git a/core/src/test/java/org/jdbi/v3/core/result/TestResultIterable.java b/core/src/test/java/org/jdbi/v3/core/result/TestResultIterable.java index f45e75d7fc..fb3e795ce9 100644 --- a/core/src/test/java/org/jdbi/v3/core/result/TestResultIterable.java +++ b/core/src/test/java/org/jdbi/v3/core/result/TestResultIterable.java @@ -13,6 +13,8 @@ */ package org.jdbi.v3.core.result; +import java.util.stream.Collectors; + import org.jdbi.v3.core.rule.H2DatabaseRule; import org.junit.Rule; import org.junit.Test; @@ -58,4 +60,17 @@ private String reverse(String input) { } return b.toString(); } + + @Test + public void testCollectSuper() { + dbRule.getJdbi().useHandle(h -> { + h.execute("CREATE TABLE numbers (id INT)"); + h.execute("INSERT INTO numbers VALUES (1), (2), (3)"); + }); + + assertThat(dbRule.getSharedHandle().createQuery("select * from numbers order by 1") + .map((rs, ctx) -> "ID: " + rs.getInt("id")) + .collect(Collectors.joining("\n"))) + .isEqualTo("ID: 1\nID: 2\nID: 3"); + } }