[ https://issues.apache.org/jira/browse/IGNITE-22393?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17851576#comment-17851576 ]
Tiago Marques Godinho commented on IGNITE-22393: ------------------------------------------------ Left a test to reproduce the issue. > FieldAccessor does not set the correct BinaryMode when a TypeConverter is > used to Map a POJO field > -------------------------------------------------------------------------------------------------- > > Key: IGNITE-22393 > URL: https://issues.apache.org/jira/browse/IGNITE-22393 > Project: Ignite > Issue Type: Bug > Affects Versions: 3.0.0-beta1 > Reporter: Tiago Marques Godinho > Priority: Major > Labels: ignite-3 > > I'm using the Mapper API with a TypeConverter to convert a POJO field into > and Instant/Timestamp column. > However, the FieldAccessor code is very strict. It tries to find the binary > mode directly from the original field type (in the POJO) instead of the > target type of my TypeConverter. > [Here is the > culpit|https://github.com/apache/ignite-3/blob/ceac03f6b8574c1cbe23aed64ce082a6a4978ea1/modules/marshaller-common/src/main/java/org/apache/ignite/internal/marshaller/FieldAccessor.java#L73-L79] > Stacktrace: > {code:java} > Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 > TraceId:c3ef0478-fd84-4d47-a33b-2a19a1f67e59 java.lang.ClassCastException: > class java.time.LocalDate cannot be cast to class [B (java.time.LocalDate and > [B are in module java.base of loader 'bootstrap') > at > app//org.apache.ignite.internal.client.table.ClientKeyValueView.writeKeyValueRaw(ClientKeyValueView.java:610) > at > app//org.apache.ignite.internal.client.table.ClientKeyValueView.writeKeyValue(ClientKeyValueView.java:590) > at > app//org.apache.ignite.internal.client.table.ClientKeyValueView.lambda$putAsync$9(ClientKeyValueView.java:235) > at > app//org.apache.ignite.internal.client.table.ClientTable.lambda$doSchemaOutInOpAsync$5(ClientTable.java:460) > at > app//org.apache.ignite.internal.client.TcpClientChannel.send(TcpClientChannel.java:332) > ... 30 more > Caused by: org.apache.ignite.internal.marshaller.MarshallerException: > IGN-CMN-65535 TraceId:c3ef0478-fd84-4d47-a33b-2a19a1f67e59 > java.lang.ClassCastException: class java.time.LocalDate cannot be cast to > class [B (java.time.LocalDate and [B are in module java.base of loader > 'bootstrap') > at > app//org.apache.ignite.internal.marshaller.FieldAccessor.write(FieldAccessor.java:401) > at > app//org.apache.ignite.internal.marshaller.Marshaller$PojoMarshaller.writeField(Marshaller.java:300) > at > app//org.apache.ignite.internal.client.table.ClientKeyValueView.writeKeyValueRaw(ClientKeyValueView.java:606) > ... 34 more > Caused by: java.lang.IllegalArgumentException: java.lang.ClassCastException: > class java.time.LocalDate cannot be cast to class [B (java.time.LocalDate and > [B are in module java.base of loader 'bootstrap') > at > org.apache.ignite.internal.marshaller.FieldAccessor$ReferenceFieldAccessor.write0(FieldAccessor.java:809) > at > org.apache.ignite.internal.marshaller.FieldAccessor.write(FieldAccessor.java:399) > ... 36 more > Caused by: java.lang.ClassCastException: class java.time.LocalDate cannot be > cast to class [B (java.time.LocalDate and [B are in module java.base of > loader 'bootstrap') > at > org.apache.ignite.internal.marshaller.FieldAccessor.writeRefObject(FieldAccessor.java:381) > at > org.apache.ignite.internal.marshaller.FieldAccessor$ReferenceFieldAccessor.write0(FieldAccessor.java:807) > ... 37 more {code} > -- This message was sent by Atlassian Jira (v8.20.10#820010)