【发布时间】:2017-08-23 17:01:15
【问题描述】:
我想重用曾经从数据库中删除的领域对象。
可以说,我从数据库中删除了一个对象。
Story story = realm.where(Story.class).equalTo("id","id").findFirst();
story.deleteFromRealm();
现在,我想将删除的对象汇集起来,并希望以不同的“id”(主键)重用它,而不是每次都创建一个新对象。
当前的实现不允许我这样做并抛出异常。
我的问题是,是否有另一种方法可以实现相同的目标。 如果不是,这应该是添加到领域的功能吗?
抛出异常的请求代码
Story story1 = StoryObjPool.getInstance().getStory();
if(story1 != null){
story1.setId(1234);
}
异常
java.lang.IllegalStateException: This Realm instance has already been closed, making it unusable.
at io.realm.BaseRealm.checkIfValid(BaseRealm.java:348)
at io.realm.StoryRealmProxy.realmSet$id(StoryRealmProxy.java:177)
at com.hn.nishant.nvhn.model.Story.setId(Story.java:98)
【问题讨论】:
-
你能显示
The current implementation does not allow me to do this and throws an exception的代码吗 -
realm 抛出一个非法状态异常,表示对象从数据库中删除时已关闭
-
我有另一个想法可以解决你的问题,你不需要从 Realm 中删除对象,只需更新这个 id
-
id 是主键。
-
如果我伪造你的问题,我将使用
copyFromRealm()将story转换为独立对象,然后使用copyToRealm()更改id 并将其保存到领域