Я использую Apache Ignite с аннотациями классов, как описано в «Настройка запроса по аннотациям» .
Как мы должны обрабатывать изменения класса?Например, что произойдет, если из моего приложения v1 и v2 я добавлю новое свойство?Предыдущие значения десериализованы?Могу ли я указать значение по умолчанию?
Я не могу найти документацию по этой теме.Я попытался с простым вариантом использования и кажется, что новые свойства являются нулевыми.Как я могу справиться с этим?
ОБНОВЛЕНИЕ
Следуя советам @dmagda, я попытался добавить свойство в свой класс, добавив его в таблицу с помощью ALTER TABLE MYTABLE ADD COLUMN myNewProperty varchar;
, а затем изменив его значение с помощьюUPDATE MYTABLE SET myNewProperty='myDefaultValue'
.
Но, к сожалению, запустив обитель UPDATE
Я получаю исключение: Error: class org.apache.ignite.binary.BinaryObjectException: Failed to unmarshal object with optimized marshaller (state=50000,code=0)
Можно обновить существующие записи, изменив новые поля с помощью SQL?Как?
ОБНОВЛЕНИЕ 2
Решил мою проблему.Это было вызвано тем, что мой класс был написан на scala с некоторыми специфическими типами scala ('Map', ...).Мое приложение подключается к Ignite с использованием режима клиента, поэтому при выполнении UPDATE из sqlline
утилита Ignite не смогла десериализовать типы.Теперь я переключил свой класс на обычный POJO, и теперь я могу обновлять схему и обновлять данные.