检查 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
检查 null
或 empty
如下所示
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?
/....
}
我想获取 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
检查 null
或 empty
如下所示
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?
/....
}