问题标签 [android-room-relation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
64 浏览

android - 如何将我的 Data 对象传递给 DAO 并访问 Query 中的所有数据对象属性?

我有简单的数据对象,我想插入到房间数据库中,但是当我在主键上使用自动增量时,我这样做如下

我在 T1 中有很多属性,所以如果可能的话,我不想单独传递它们。在上面的例子中,我只展示了两个属性。

0 投票
2 回答
193 浏览

android - 如何获取最新的关系项而不是 Android Room 中的列表

我的结构如下:

包含一个或多个消息的对话。对话和消息都在各自的表格中。我创建了一个 ConversationDetailed 关系 POJO,将 Conversation 与其消息列表合并。

到目前为止,这按预期工作,没有发现任何问题。现在我正在尝试创建一个 ConversationSummary 关系,其中只有属于该对话的最新消息,我无法在任何地方找到如何执行此操作的示例。这就是我想要实现的目标:

我知道我可以使用 ConversationDetailed 并从列表中选择最新的消息,但这意味着无需任何必要就可以从数据库中查询很多消息,而我想要的只是最新消息。

如何使用上面示例中的关系 POJO 来实现这一点?

编辑:在尝试了另一个用户建议的初始答案后,我发现关系是单独的查询,这就是使用关系 POJO 的查询使用事务的原因,因此问题仍未得到解答。有没有办法指定关系项的顺序?

EDIT2:在提供第一个答案的同一用户详细解释后,我终于能够完成这项工作。这是适用于我的案例的基本原理。

MAX 与 JOIN 的组合允许我选择从所有消息中选择具有最新消息的对话,包括与该消息无关的所有对话。为对话 id 添加 GROUP BY 拆分上述逻辑以获得每个唯一对话 id 的 MAX。之后就是将 ORDER BY 应用于消息创建日期的问题。

0 投票
0 回答
44 浏览

android - 每次创建 Fragment 时,来自 Dao 的 LiveData 都会触发 onChanged

我发现无论何时创建我的 Fragment,Dao 返回的 LiveData 都会调用其观察者,即使 LiveData 值没有更改。我有 2 个实体,它们具有这样的一对一关系:

}

道法

在我的 Fragment onCreate() 方法中,我调用 LiveData 方法,例如:

onChanged 返回我数据库中的整个 PetAndTracker 列表,但我只希望 onChanged 在数据真正更改或调用插入/更新/删除方法时触发。

0 投票
1 回答
103 浏览

android - 来自联结的 Android Room 子集值

我正在尝试从联结表中提取值/列的子集,如下所示

但是它会引发以下错误:

这不可能吗?我找不到任何说明如何执行此类操作的文档或示例。

0 投票
1 回答
568 浏览

android - 如何为房间数据库中的嵌套对象创建实体类

我收到来自 GitHub API 的以下响应

我试过下面的代码

用户类

我想将 GitHub api 响应保存在房间数据库中,但我不知道如何为嵌套对象创建实体类

如果需要更多信息,请告诉我。提前致谢。您的努力将不胜感激。

0 投票
1 回答
135 浏览

android - 多对多 android room ref 额外变量

我在 Room 数据库上设置了多对多关系,如下图所示:

关系图

一切都很好,但我想做以下补充: 更新关系图

我的问题是,当在查询中构造 recipeWithIngredients 时,如何让 RecipeWithIngredients 从 RecipeIngredientRef 实体获取此单元:字符串变量?

0 投票
1 回答
148 浏览

android - 具有 2 个实体的数据类混淆列

我在 Android 应用程序的房间数据库中有两个实体。这个概念是每个站点都有许多组。

所以我想给一个siteId和一个groupId,两个从数据库中获取一个名为SiteWithGroup的POJO,它是

我创建了一个 MediatorLiveData,它观察 siteId、groupId 并且当它同时具有这两者时,它会从 db 返回一个查询

如果我们假设 siteId, groupId = 1, 1 and i 在我的数据库中有以下条目

我们期望结果是

但是我们得到了这个

站点实体得到组描述和错误的描述!!似乎根本没有应用组约束。这是怎么回事?我该如何解决?谢谢

但是在我的用户界面上,结果是

0 投票
0 回答
214 浏览

android - Android Room:应用与嵌入对象相关的多个列

在我的 Android 应用程序中,我使用 Room 进行数据存储。我目前面临的问题是,我需要在嵌入对象的@Relation 中放置 2 列,因为关系取决于 2 列。看下面的结构:

在我的 DamageDAO 中,我有以下方法:

问题:在@Relation 的DamageCodeAndType 类中,我不仅需要将damageType 指定为parentColumn,还需要指定projectId。此外,在 entityColumn 我需要将 projectId 添加到 ttype 列。我怎样才能做到这一点?这样的事情可能吗?

如果这是不可能的,任何人都可以指出我如何解决这个问题。谢谢你。

0 投票
2 回答
336 浏览

java - Android Room 在“嵌入式​​实体”中获取“传入外键列表”中的元素计数?

我有 2 个实体,Grade并且StudentStudent有一个通往教室的外键。嵌入式实体ClassRoom看起来像这样,

我想要实现的是,ClassRoomInstance.strength用于获取传入外键的计数。比计算学生的规模students.size

实现这一目标的方法是什么?

谢谢

0 投票
1 回答
39 浏览

android - Android Room Relation 返回无效列表

我有一个复杂关系的查询。

我有 3 个实体和一个额外的类

GameHouseworkResult 是一个 binder 类,它包含以下数据 在此处输入图像描述

当我用 发送请求时gameId = 26,我应该得到一个包含五个元素的列表(houseworkAndResult),但我得到一个包含 10 个元素的列表,每个元素都这么说gameId = 26。这很可能是由于相同的 houseworkId,但我不明白我在制定关系时哪里出错了。请帮我!