Android Room DB-在查询中使用另一个类的静态变量

时间:2019-02-18 14:08:14

标签: android android-room android-jetpack

当我在DAO类中编写查询时,可以使用其他类(或枚举)中的静态变量吗?如果可以的话,请告诉我如何?

我的意思是这样的:

public enum MessageState {
   NOTHING,
   PENDING,
   SEND
}

以及DAO类的查询语句中

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

2 个答案:

答案 0 :(得分:1)

将您的枚举作为默认参数传递给函数:

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

这样,您无需在每次通话时都提供它,而可以获得相同的结果。

答案 1 :(得分:0)

您可以像使用Java中的普通String一样将其连接起来:

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

如果您使用的是Kotlin:

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