Skip to content

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

@bk-mz

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)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions