如何解决如果有null,
我最近开始使用Room,我想知道在插入或更新实体时是否有任何方法可以检查该值是否为null,在这种情况下,请勿将其插入/update。
我想做的是类似的事情
@Entity
data class Person{
@PrimaryKey
val id: Int,val name:String
val surname:String
}
是否可以通过简单的方式对不为null的那些字段执行@Update操作?而那些不为null的则保持原样?
例如,在一个更新中,我可能已经通知了ID和名称,但是在另一个更新中,我可能已经通知了ID和姓氏。因此,我想要的是合并信息,但是如果可能的话,不必进行选择查询来检查存储的值。
我已经读过following post,但我的疑问是,是否可以定义一个@Entity,将所有字段定义为我之前提到的字段,然后让其他实体进行更新一些字段,例如:
@Entity(tableName = "person")
data class PersonUpdateSurname{
@PrimaryKey
val id: Int,val name:String
}
@Entity(tableName = "person")
data class PersonUpdateSurname{
@PrimaryKey
val id: Int,val surname:String
}
有没有办法告诉Room原始的表结构是什么?
解决方法
有没有办法告诉Room原始的表结构是什么?
这个问题不清楚。也许您有一些误会。
尝试遵循下一个模式:
- 应该只有一个与
Person
相关的带有房间注释的数据类-@ Entity,@ PrimaryKey等。您的情况是Person
类。 - 其余所有提到的辅助类应该只是POJO(纯数据类),因为它们没有被持久化。就您而言-
PersonName
和PersoneSurname
(带有您描述的字段,但没有Room的注释)。 - 在DAO中,在@Update中使用
entity
-参数:
@Update(entity = Person::class)
fun updateName(personName: PersonName)
@Update(entity = Person::class)
fun updateSurname(personeSurname: PersonSurname)
在您的存储库调用方法中,您需要什么。如果只想更新名称,请使用方法updateName()
和PersonName
类的实例作为参数,而仅要更新姓氏,请使用方法updateSurname()
和类PersonSurname
的实例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。