如何解决领域覆盖数据库中的对象
我目前正在与Kotlin,RealmDB和Android Studio中的Android开发打交道。
每当我尝试通过“保存按钮”将新的Account Realm对象插入数据库时,似乎它会擦除最后保存的对象并插入新的对象,因此每个用户在数据库中只有一个对象。我已经调试了此流程,查询仅从结果集中返回一个对象。
private lateinit var firebaseUser:FirebaseUser
private lateinit var firebaseAuth:FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.my_layout)
//init views
realm = Realm.getDefaultInstance()
titleED = findViewById(R.id.title_edit_text)
descED = findViewById(R.id.desc_edit_text)
saveAccountBtn = findViewById(R.id.saveAccountBtn)
savePsswdBtn.setOnClickListener {
addAccountToDB()
}
}
private fun addAccountToDB(){
try{
realm.beginTransaction()
firebaseAuth = FirebaseAuth.getInstance()
firebaseUser = firebaseAuth.currentUser!!
val account = Account()
account.id = //generatesID()
account.title = titleED.text.toString()
account.desc = descED.text.toString()
account.userID = firebaseUser.uid
//copy to DB
realm.insertOrUpdate(account)
realm.commitTransaction()
Toast.makeText(this,"Success!",Toast.LENGTH_SHORT).show()
startActivity(Intent(this,InitialActivity::class.java))
finish()
}catch (ex:Exception){
Toast.makeText(this,"Failed $ex ",Toast.LENGTH_SHORT).show()
}
}
对象类
open class Account (
@PrimaryKey
var id:Int?=null,var title:String?=null,var desc:String?=null,var userID:String?=null
) :
我在某种程度上使用Realm清理用户数据库并保存新对象吗?我使用了帐户的主键(account.id成员),以查看是否影响了它,但是仍然存在相同的问题。还可以在Realm的.insertOrUpdate()和.copyToRealmOrUpdate()之间切换。
解决方法
在重构将帐户保存到数据库中的代码时,我也将主键分配移到了那里,并且以某种方式允许我添加更多对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。