-
Notifications
You must be signed in to change notification settings - Fork 614
Open
Description
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
- Create a POJO with a nested custom object field (e.g.,
Address address) - Define ClickHouse table with
Nestedtype (e.g.,address Nested(street String, city String)) - 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)