当前位置: 首页 > 面试题库 >

保存领域关系不会持久化它们

段干博明
2023-03-14
问题内容

我有文章清单。
那些文章是通过使用插入的realm.copyToRealmOrUpdate();,效果很好。

现在,每篇文章都有一个authorId,不应保留它。而是我想找到存储的作者RealmObject并为文章设置其关系。

Author author = realm.where(Author.class).equalTo("id", article.getSerializedAuthor()).findFirst();
article.setAuthor(author);

某种程度上,这似乎并不是领域所坚持的。

这同样适用于图像RealmObject,只是我在保存之前进行了迭代。

这是完整的代码段。

realm.beginTransaction();
realm.copyToRealmOrUpdate(articles.data);

for(Article article : articles.data) {
    Author author = realm.where(Author.class).equalTo("id", article.getSerializedAuthor()).findFirst();
    article.setAuthor(author);

    for (Image image : article.getSerializedImages().data) {
        if (article.getImages() == null) {
            article.setImages(new RealmList<Image>());
        }
        article.getImages().add(image);
    }
}
realm.commitTransaction();

如果您需要更多信息,请告诉我。
谢谢。


问题答案:

来自Realm的基督徒。您将继续操作刚刚复制到Realm的独立对象,因为它们仍然是独立对象,而不是“适当”的Realm对象,因此将无法使用。您可以在此处了解更多信息:http : //realm.io/docs/java/0.80.0/#creating-
objects
和JavaDoc中的http://realm.io/docs/java/0.80.0/api/io/ realm /
Realm.html#copyToRealm-E-

因此,如果将代码更改为如下所示,它应该可以工作:

realm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        List<Article> realmArticles = realm.copyToRealmOrUpdate(articles.data);

        for(Article article : realmArticles) {
            Author author = realm.where(Author.class).equalTo("id", article.getSerializedAuthor()).findFirst();
            article.setAuthor(author);

            for (Image image : article.getSerializedImages().data) {
                article.getImages().add(image);
            }
        }
    }
});


 类似资料:
  • 问题内容: 如您所见,我没有调用,它已经被注释掉了,因为我先是干运行这段代码。但是,事实证明它不是很干。检查数据库后,我发现数据已更改(幸运的是,这是一个测试数据库)。 显然,我对Hibernate / JPA的理解是有缺陷的。并非总是需要打电话来更改数据吗?如果没有,保存什么东西的规则 是 什么? 问题答案: 是的,如果检测到任何更改,则在完成刷新(也使用提交完成刷新)后保存托管实体,这称为脏检

  • 情况: 我有两个与OneTomany/ManyToone关系相关的实体。 想象一下,每个类也有一个名为id和getter和setter的PK。 问题: 如果我创建一个EntityA实例并设置一个与已经存在的EntityB实例的关系并持久化这个新实例,那么所有数据都会正确地保存到数据库中。但是,如果我从我的EntityManager请求EntityB的实例,它的列表中将不包含刚刚持久化的Entity

  • 我正在使用网络逻辑10.3。我正在尝试配置一个持久订阅,其中包含由 jdbc 存储(在 Oracle DB 中)支持的持久消息。我有一个主题,MDB 正在作为持久订阅者侦听该主题。在场景-1下:如果我发送消息,它会命中MDB。 在场景2中:我挂起了MDB,希望发送到主题的消息只要不被MDB(它是唯一注册的持久订阅者)使用,就会一直存在。但是当我向主题发送消息时,它短暂地出现在那里,然后就消失了(我

  • 我目前正在修补一个简单的HTTP资源。我的模型由多个“果实”的“树”组成。两者都继承自PanacheEntity。 水果 资源: 这是我通过Swagger发送的帖子请求 水果总是空的。检查postgres数据库会发现Fruit中的所有“tree_id”列都为NULL。我很确定这是一个初学者的问题,但是在检查了多个示例之后,我就是找不到我的代码有什么问题。

  • 和RDD相似,DStreams也允许开发者持久化流数据到内存中。在DStream上使用persist()方法可以自动地持久化DStream中的RDD到内存中。如果DStream中的数据需要计算多次,这是非常有用的。像reduceByWindow和reduceByKeyAndWindow这种窗口操作、updateStateByKey这种基于状态的操作,持久化是默认的,不需要开发者调用persist(

  • 本平台是通过storageclass来动态创建PV。也就是说咱们依赖于storageclass,如果您的Kubernetes不支持相应的存储试,将无法非常方便的进行挂载。 目前暂不支持挂载多个PVC,或许以后会更新吧。 这里演示的是用的NFS进行演示,实际使用时可根据自己的需求配置相应的provisioner,其他配置是一样的不需要调整,只需要在“模版管理” 调整StorageClass和Pers