Skip to content

POJO serializer cannot handle nested custom objects with Nested types #2709

Description

@bk-mz

Description

The POJO serializer cannot serialize nested custom objects when using ClickHouse Nested data types. It expects flattened List fields matching the flattened column names but doesn't traverse nested object graphs.

Steps to reproduce

  1. Create a POJO with a nested custom object field (e.g., Address address)
  2. Define ClickHouse table with Nested type (e.g., address Nested(street String, city String))
  3. Attempt to insert POJO using client.insert()

See PR #2708 for complete working example.

Error Log or Exception StackTrace

[main] INFO com.clickhouse.examples.client_v2.POJO2DbWriter - Table initialized. Registering class.
[main] WARN com.clickhouse.client.api.serde.POJOSerDe - No getter method found for column: addressstreet
[main] WARN com.clickhouse.client.api.serde.POJOSerDe - No setter method found for column: addressstreet
[main] WARN com.clickhouse.client.api.serde.POJOSerDe - No getter method found for column: addresscity
[main] WARN com.clickhouse.client.api.serde.POJOSerDe - No setter method found for column: addresscity
Exception in thread "main" java.lang.IllegalArgumentException: No serializer found for column 'address.street'. Did you forget to register it?
	at com.clickhouse.client.api.Client.insert(Client.java:1238)
	at com.clickhouse.examples.client_v2.POJO2DbWriter.flush(POJO2DbWriter.java:94)
	at com.clickhouse.examples.client_v2.POJO2DbWriter.submit(POJO2DbWriter.java:89)
	at com.clickhouse.examples.client_v2.Main.main(Main.java:59)

Expected Behaviour

POJO serializer should traverse nested object graphs and call getAddress().getStreet() when encountering nested custom objects.

Configuration

Environment

  • Client version: main branch
  • Language version: Java 17
  • OS: macOS

ClickHouse Server

  • ClickHouse Server version: latest (Docker image)

Activity

  1. added theissue type on Jan 12, 2026
  2. chernser commented on Jan 12, 2026

    @chernser
    Contributor

    Good day, @bk-mz !
    Thank you for reporting!

    We will see how it can be implemented. The fastest way would be adding customer serializers.

  3. added this to the 0.12.0 milestone on Jul 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions