【问题标题】:Store non realm object into realm database将非领域对象存储到领域数据库中
【发布时间】:2018-12-20 11:42:06
【问题描述】:

我有一个第三方库,其中创建了许多数据模型来捕获对象中的数据。例如,要存储记录,他们有Record 类,要存储葡萄糖读数,他们有Diabetes 类。

现在这些类是库的一部分,它们声明如下

public class Record implements Serializable {        
}

public class Diabetes extends Record implements Serializable {
}

我想使用这些类并将其存储到领域中。由于领域具有必须从RealmObject 扩展的约束,我不知道如何存储在库声明的类中捕获的数据。

由于Diabetes 没有扩展RealmObject,我无法做到以下几点

Diabetes diabetes = new Diabetes() ;

 realm.executeTransaction((realm) -> {
            realm.insert(diabetes);
 });

那么有没有办法将非领域对象存储到领域数据库中?如果我通过扩展RealmObject 在我的应用程序中重新创建相同的类,那么我应该如何快速将非领域对象关闭为领域对象?

【问题讨论】:

  • 为什么要扩展 Serializable?
  • 我已经提到它在库中声明了,我没有声明它
  • 在 json 中序列化它们以将它们存储在 String 中。这是我认为解决您的问题的唯一方法。或者您创建镜像这些类的 Realm 对象并使用 Mapstruct 之类的东西来映射属性
  • 您找到解决方案了吗?你试过我的建议了吗?

标签: android realm


【解决方案1】:

为 Record 创建一个新类,比如 RecordEntry 并使其扩展 RealmObject。

在 RecordEntry 中创建一个静态函数,该函数接受 Record 类作为参数,然后将其转换为新的 RecordEntry 对象。

例子

static RecordEntry createRecordEntry(Record record) {
    return new RecordEntry(record.id, record.title);
}

【讨论】:

  • 我正在寻找一些简单的方法,而不是逐个字段地克隆对象
  • 祝你好运! :)
  • 或房间。我从来没有遇到过这个库的问题,但我不断听到有关 Realm 的问题和复杂性。
  • 我只听说过关系不好,尤其是递归关系和与 Room 的嵌套关系。
  • 您可以使用 MapStruct 轻松映射对象 ;) 我同意 Realm 对象是一个痛苦的 ***
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
相关资源
最近更新 更多