What do I need to do to fix "No Mapper Registered" when trying to Stream a result set from a SqlObject DAO? The method is annotated with @RegisterBeanMapper and the documentation seems incomplete.
According to https://jdbi.org/#_consumer_arguments:
As a special case, it is possible to use a Consumer argument in addition to other bound arguments.
Unless the type T is a Stream or an Iterator, the consumer is executed once for each row in the result set. The static type of parameter T determines the row type.
If the consumer implements Consumer<Iterator>, or Consumer<Stream>, then the consumer is executed once with the Iterator or Stream holding the results. The static type of parameter T determines the mapped row type here as well. When using a consumer argument with an iterator or a stream, Jdbi will manage and close them after the callback completes.
I'm using the following in a DAO interface:
@SqlQuery(" SELECT id, title FROM " + TABLE_XML_RECORDS // + " WHERE" // + " issuedate IS NULL" // + " AND sort_date <= :issueweek" // + " AND sort_date >= :oldest" // + " AND sort_date IS NOT NULL" // + " ORDER BY sort_date DESC") @RegisterBeanMapper(IdTitle.class) void getRecordIdsFor(@Bind("issueweek") LocalDate issueweek, @Bind("oldest") LocalDate oldestSortDate, java.util.function.Consumer<Stream<IdTitle>> consumer);
But I'm getting:
No mapper registered for type java.util.stream.Stream<clarivate.mariadb.models.IdTitle>
I've tried searching for code snippets to go by, but my search foo is failing and the documentation does not contain a simple concrete example to go by.