检查 Room DB 中的列是否为 NULL 或为空

Nab*_*bin 0 java android kotlin android-room kotlin-coroutines

我想获取MyModeldeletedAt值为的列表NULL。这是我的表:

@Entity(tableName = "my_table")
data class MyModel(
    @PrimaryKey
    @ColumnInfo(name = "id")
    var id: String,
    @ColumnInfo(name = "deletedAt")
    var deletedAt: Date? = null
)
Run Code Online (Sandbox Code Playgroud)

道:

@Dao
abstract class MyDao : BaseDao<MyModel> {

@Query("SELECT * from my_table WHERE deletedAt IS NULL")
abstract fun getList(): LiveData<List<MyModel>>
}
Run Code Online (Sandbox Code Playgroud)

我的类型转换器:

object DateTypeConverter {
@TypeConverter
@JvmStatic// It need to added else gives unwanted data binding error :D
fun fromTimestamp(value: Long?): Date? {
    return if (value == null) null else Date(value)
}

@TypeConverter
@JvmStatic
fun dateToTimestamp(date: Date?): Long? {
    return date?.time
}
Run Code Online (Sandbox Code Playgroud)

但即使某些条目的 deletedAt 值为空,它也会返回所有 MyModel 数据。

Md.*_*man 6

尝试使用以下NULLIF检查nullempty喜欢

NULLIF(deletedAt, '') IS NULL
Run Code Online (Sandbox Code Playgroud)

完整的Query

@Query("SELECT * from my_table WHERE NULLIF(deletedAt, '') IS NULL")
Run Code Online (Sandbox Code Playgroud)