Воспламенить удалить не удается для дочернего объекта

#ignite

Вопрос:

В нашем продукте мы используем Ignite ClientCache для кэширования объектов. Мы используем объект класса в качестве ключа для хранения в кэше. Теперь, когда я создаю другой объект класса диска и сохраняю его в кэше ClientCache. Здесь я добавляю объект класса диска в кэш базового класса, и после того, как я добавил объект дочернего класса, я обновил некоторые его поля-члены перед удалением. Теперь, когда я вызываю ClientCache.remove() для такого объекта класса диска, он не может найти такой ключ. Поэтому мой вопрос в том, как я могу предоставить пользовательский компаратор, я уже пробовал переопределение функций java equals() и hashcode (), но это не работает.

Комментарии:

1. Я не совсем понимаю, что вы здесь делаете. Можете ли вы поделиться некоторыми образцами кода? Я бы сказал, что Ignite не является базой данных объектов (хотя с некоторых точек зрения она выглядит таковой).

2. Извините за путаницу. Но в моем случае мы используем объект базового класса, который расширяет внешний интерфейс в качестве ключа в

3. Извините за путаницу. В моем случае мы используем объект базового класса, который реализует внешний интерфейс и использует его в качестве ключа в Ignite ClientCache. Теперь я создал еще один класс привода, который расширяет базовый класс. Теперь, когда я создаю ключевой объект для своего класса дисков и добавляю() его в кэш клиента, во время съемного удаления() не может найти этот ключ и возвращает false. Я уже переопределил equals() и hashCode() в своем классе дисков и убедился, что значение хэша, которое я получаю, совпадает со значением хэша во время удаления (), но удалить() все еще не удается. Что я могу сделать в этом случае ?

Ответ №1:

Ignite считает два объекта равными, когда все следующее верно:

  • Идентификатор типа один и тот же (один и тот же класс).
  • Сериализованное представление ( byte[] ) — это то же самое.

Ignite не использует стандарт equals() и hashCode() для сравнений, поскольку механизм БД работает с сериализованными данными. Нет никакого способа переопределить это поведение.