Запрос на обновление номера обновляет только одну строку - PullRequest
0 голосов
/ 08 июня 2018

У меня есть Book объект с 3 первичными ключами (id, ownToTab, propertyOfUserId)

Скажем, у меня есть база данных книг, подобная этой:

book1 (id= 10162, ownToTab = 1, propertyOfUserId = 896)

book1 (id = 10162, ownToTab = 0, propertyOfUserId = 896)

В моем BookDao интерфейсе я создал методкак это:

@Query("UPDATE BOOK SET isArchived = 1 Where id in (:listId) and propertyOfUserId = :userId")
void updateBookArchived(List<Long> listId, long userId);

Для тестирования у меня есть только один элемент (который составляет 10162) внутри listId.Когда вызывается этот метод, я извлекаю базу данных и обнаруживаю, что обновляется только одна строка (первая с отношением ownToTab = 1) isArchived = 1. Другая по-прежнему 0 (такая же, как и раньше)

Но если явыполнить запрос в браузере sqlite: UPDATE BOOK SET isArchived = 1 Where id in (10162) and propertyOfUserId = 896 результат идеален, 2 строки обновлены.

Я попытался передать оба значения List<Long> и Long[], но безуспешно.Отладка сгенерированного файла BookDao_Impl Я вижу, что строка запроса похожа на

UPDATE BOOK SET isArchived = 1 Где id in (?) И propertyOfUserId =?

(еслисписок содержит 3 элемента, тогда это ... Where id in (?,?,?) and ....), так что я думаю, что передача списка в него работает.Понятия не имею, что было не так.

Спасибо за ваше драгоценное время.

РЕДАКТИРОВАТЬ: Я создал простой проект для проверки проблемы, и запрос работал какожидается.Должна быть другая проблема с .... "структурой" или чем-то еще.Хотел бы я знать, какова возможная причина этой проблемы.

1 Ответ

0 голосов
/ 08 июня 2018

Это было глупо.Была новая запись от API, которая перезаписывала последнюю строку.

Я боролся 2 дня, полагая, что API верен.Мой плохой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...