Android Room DB - использовать статическую переменную из другого класса в запросе - PullRequest
0 голосов
/ 18 февраля 2019

Когда я пишу запрос в классе DAO, могу ли я использовать статическую переменную из другого класса (или enum)?Если это возможно, скажите, пожалуйста, КАК?

Я имею в виду что-то вроде этого:

public enum MessageState {
   NOTHING,
   PENDING,
   SEND
}

и в запросе в классе DAO:

@Query("SELECT * FROM message_db WHERE state = :MessageState.PENDING.ordinal()")

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

Передайте ваше перечисление в функцию в качестве параметра по умолчанию:

@Query("SELECT * FROM message_db WHERE state = :state")
fun getMessages(state: Int = MessageState.PENDING.ordinal()): List<Message>

Таким образом вам не нужно будет указывать его при каждом вызове, но вы получите тот же результат.

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

Вы можете объединить его как обычную строку в Java:

@Query("SELECT * FROM message_db WHERE state = " + MessageState.PENDING.ordinal() + ")"

Если вы используете Kotlin:

@Query("SELECT * FROM message_db WHERE state = ${MessageState.PENDING.ordinal()}")
...