Hmm, it worked fine for me on a primitive pipeline and default AvroCode for simple InboundData implementation.
Could you create a GitHub issue for that (https://github.com/apache/beam/issues)? It would be very helpful to provide the steps there how to reproduce this issue. Thanks, Alexey > On 23 Mar 2023, at 19:08, Juan Cuzmar <jcuz...@protonmail.com> wrote: > > unfortunately didn't work. > I added the @DefaultCoder as you told me and i removed the .withCoder from my > JdbcIO pipe and showed the same error: > > java.lang.IllegalStateException: Unable to infer a coder for JdbcIO.readAll() > transform. Provide a coder via withCoder, or ensure that one can be inferred > from the provided RowMapper. > > > > > Juan Cuzmar. > > ------- Original Message ------- > On Thursday, March 23rd, 2023 at 2:17 PM, Alexey Romanenko > <aromanenko....@gmail.com> wrote: > > >> Well, perhaps it’s a bug (I’ll try to check it on my side later). >> >> Can you try to annotate InboundData class with >> “@DefaultCoder(AvroCoder.class)” for example and see if it will work? >> >>> On 23 Mar 2023, at 15:13, Juan Cuzmar jcuz...@protonmail.com wrote: >>> >>> Alexey yes! here it is: >>> >>> import lombok.*; >>> import lombok.extern.jackson.Jacksonized; >>> >>> import java.io.Serializable; >>> import java.util.List; >>> import java.util.Map; >>> >>> @Jacksonized >>> @Builder >>> @Getter >>> @Value >>> @EqualsAndHashCode >>> @ToString >>> public class InboundData implements Serializable { >>> >>> String payload; >>> Map<String, String> attributes; >>> List<Store> stores; >>> } >>> >>> ------- Original Message ------- >>> On Thursday, March 23rd, 2023 at 8:14 AM, Alexey Romanenko >>> aromanenko....@gmail.com wrote: >>> >>>> Could you share a class declaration of your InboundData class? Is it just >>>> a POJO? >>>> >>>> — >>>> Alexey >>>> >>>>> On 23 Mar 2023, at 08:16, Juan Cuzmar jcuz...@protonmail.com wrote: >>>>> >>>>> Hello all, >>>>> >>>>> I hope this message finds you well. I am currently working with Apache >>>>> Beam's JdbcIO and need some guidance regarding setting a coder for the >>>>> input data without resorting to the deprecated withCoder method. I've >>>>> been trying to resolve this issue and would appreciate any insights or >>>>> recommendations from the community. >>>>> >>>>> Here's a snippet of my code: >>>>> >>>>> .apply("Inserting", JdbcIO.<PubsubMessage, InboundData>readAll() >>>>> .withDataSourceProviderFn(DataSourceProvider.of(dbConfig)) >>>>> ... >>>>> .withRowMapper(resultSet -> { >>>>> // Mapping logic here >>>>> }).withOutputParallelization(false) >>>>> ).setCoder(SerializableCoder.of(InboundData.class)) >>>>> >>>>> When I run the code, I encounter the following error: >>>>> >>>>> java.lang.IllegalStateException: Unable to infer a coder for >>>>> JdbcIO.readAll() transform. >>>>> ... >>>>> >>>>> I understand that the withCoder method is marked as deprecated and should >>>>> be avoided. Therefore, I would like to know the recommended way to set >>>>> the coder for JdbcIO, considering the deprecated status of withCoder. >>>>> >>>>> If there are any specific coding practices or conventions that I should >>>>> follow when posting code snippets or emphasizing certain aspects, please >>>>> let me know, and I'll be sure to adhere to them in the future. >>>>> >>>>> Thank you for your time and assistance. >>>>> >>>>> Best regards!