Я не могу понять, как включить предложение WHERE в запрос аннотации Android Room @Query, где необходимо несколько запросов к таблице - PullRequest
0 голосов
/ 22 января 2019

Мне нужно преобразовать стандартный запрос SQL в аннотацию @Query для использования с Room, но я не могу понять, как это сделать.

У меня есть три стола ...

AccessList

ID INTEGER
ListName TEXT
Active INTEGER

Зачисление

ID INTEGER
FirstName TEXT
LastName TEXT

AccessListEnrollmentMapping

ID INTEGER
AccessListID INTEGER
EnrollmentID INTEGER

Регистрация может быть в нескольких AccessList, а AccessLits могут быть активными [1] или не активными [0], поэтому вот пример SQL-запроса, который работает при использовании DB Browser для SQLite:

select * from Enrollment where ID in (select EnrollmentId from AccessListEnrollmentMapping where AccessListId IN (SELECT ID FROM AccessList WHERE ID < 4 AND Active = 1));

А вот моя @Query аннотация:

@Query("select * from Enrollment where ID in (select EnrollmentId from AccessListEnrollmentMapping where AccessListId IN (:accessListIds))") // NEED TO CHECK FOR AccessList.Active == 1
public abstract List<Enrollment> selectEnrolleesPerAccessLists(List<Long> accessListIds);

Однако этот запрос возвращает все заявки на активные и неактивные списки доступа. Я не могу понять, как включить where AccessList.Active = 1 в аннотацию.

...