Вид базы Android Room - PullRequest
       3

Вид базы Android Room

0 голосов
/ 29 ноября 2018

в Android Docs код для создания представления в базе данных комнаты -

@DatabaseView("SELECT user.id, user.name, user.departmentId," +
    "department.name AS departmentName FROM user " +
    "INNER JOIN department ON user.departmentId = department.id")
data class UserDetail(
var id: Long,
var name: String?,
var departmentId: Long,
var departmentName: String?
)

, но как я могу создать представление с некоторым динамическим условием, например user.id = userId, где userId = 1 или 2 или некоторое целое число

1 Ответ

0 голосов
/ 31 января 2019

При создании представления базы данных в запросе может использоваться предложение Where, но оно не будет динамическим.Допустим, вы хотите иметь представление базы данных, которое возвращает только активных пользователей, назначенных любому отделу, поэтому вы можете иметь Where user.active = true или что-то в этом роде.Но это будет установлено в схеме, поэтому каждый раз, когда вы запрашиваете это представление, оно возвращает только активных пользователей.

При добавлении нового пользователя в таблицу User представление автоматически обновляется.

Но вам не нужно иметь это предложение Where при создании представления базы данных.После создания представления вы можете использовать его как обычную таблицу, чтобы иметь DAO, который запрашивает только тех пользователей, у которых есть требуемый идентификатор.

Например:

@Query("SELECT * FROM UserDetail WHERE id = :id")
fun search(id: Int): List<UserDetail>

Итакваше представление - это «таблица», которая объединяет пользователя и отдел, а затем вы можете выполнять запрос как обычную таблицу и иметь фильтры.

Помогает ли это?

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