所以我正在使用 Room 和 LiveData 编写一个应用程序。这是一个金融应用程序。我有两个要合并的实体,Payee和Transaction。 Transaction有一个 ForeignKey 将其链接到Payee。我一直使用 Room 中的 LiveData(Daos、Repository、ViewModels)到我的 UI(片段)。
在达到片段级别之前,我想在某个级别合并这两个数据集,但不知道该怎么做。我知道我可以直接从数据库中创建一个带有查询的 POJO,但我有点想要一个带有Payee的事务对象,而不是两者中的所有字段。
有没有办法做到这一点?也许使用其中一种转换(map 或 switchMap)?或者也许使用 MediatorLiveData?他们能否观察到不止一种数据类型(例如 LiveData 和 LiveData)?
收款人.java
@Entity
public class Payee {
@PrimaryKey (autoGenerate = true)
@ColumnInfo (name = "id")
private int id;
. . .
}
事务.java
@Entity (foreignKeys =
@ForeignKey(entity = Payee.class,
parentColumns = "id",
childColumns = "payee_id",
onDelete = RESTRICT))
public class Transaction {
@PrimaryKey (autoGenerate = true)
@ColumnInfo (name = "id")
private int id;
@ColumnInfo (name = "payee_id")
private int payeeId;
@Ignore
private Payee payee;
. . .
}