Пропустить ноль, используя аннотацию @Insert в Android Room - PullRequest
0 голосов
/ 06 февраля 2019

Я использую DAO для вставки массива объектов (например, User []) в таблицу Room:

@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAll(User... user);

Однако, возможно, что некоторые объекты внутри User [] являются нулевыми.В этом случае метод insertAll () генерирует исключение NullPointerException.

Можно ли каким-то образом пропустить нулевые значения?Я бы предпочел использовать аннотацию @Insert вместо написания пользовательского запроса вставки или предварительной фильтрации пустых значений.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Я надеялся, что Room реализовал бы утилиту для этого, например, аннотацию типа @Ignore(null), но, похоже, это не так.Это мое решение на данный момент:

Вызов метода ArrayUtils.removeAllOccurences(users, null) из org.apache.commons.lang3.ArrayUtils и использование результата в качестве аргумента для insertAll().

0 голосов
/ 08 февраля 2019
  1. Создайте другой массив того же типа объекта
  2. Назовите его temp
  3. Итерируйте по первому массиву
  4. Если элемент [i] имеет значение null, исключите егоfrom temp
  5. Передайте temp как аргумент для вашего метода

Кто-то здесь, вероятно, знает какой-то определенный библиотечно-ориентированный способ делать то, что вы хотите сделать, но это решение пришлосначала на мой взгляд.

...