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

Check if column NULL or empty in Room DB

我想获取 MyModel 的列表,其 deletedAt 值为 NULL . 这是我的 table:

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

道:

@Dao
abstract class MyDao : BaseDao<MyModel> {

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

我的类型转换器:

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
}

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

尝试使用 NULLIF 检查 nullempty 如下所示

NULLIF(deletedAt, '') IS NULL

完成Query

@Query("SELECT * from my_table WHERE NULLIF(deletedAt, '') IS NULL")

您可以在模型中使用 class

@ColumnInfo(name = "user_name")
@NonNull private String strname;

随便写

@Query("SELECT * from my_table WHERE deletedAt IS NULL")

一个常见的错误是写 like null
确保您的数据 class 是

data class(
    val id : Long,
    val deletedAt : Long? 
    /....
}