有一个getAll()方法,它返回一个列表,提供来自Room数据库的数据
@Query("SELECT * from decks ORDER BY id ASC")
fun getAll(): Flowable<List<DeckEntity>>
DeckEntity有一个id和一个name领域
创建了另一个名为它的类PrepareItem,因为我想用更多的参数来装箱
data class PrepareItem (
var deckEntity: DeckEntity,
var countsOfCards: Int
)
调用getAll(),想将它映射到PrepareItem,还在工作。
deckRepository.getAll()
.map {
it.map {
PrepareItem(it,0)
}
}
fun mapper(item: DeckEntity) : Single<PrepareItem> {
return cardRepository.getDueDatedCardsFromDeck(deckId = item.id!! /*TODO !!*/)
.map {
PrepareItem(item, it.size)
}
}
val call = deckRepository.getAll()
.flatMapIterable { item->item }
.flatMapSingle {
mapper(it)
}.toList()
.toObservable()
...
创建一个新类
class DeckWithCards {
@Embedded
lateinit var deckEntity: DeckEntity
@Relation(
entity = CardEntity::class,
entityColumn = "deckId",
parentColumn = "id")
lateinit var cards: List<CardEntity>
}
添加新的DeckDao
@Query("SELECT * from decks ORDER BY id ASC")
fun getAllWithCards(): Flowable<List<DeckWithCards>>
发布于 2018-08-14 14:44:56
用以下代码试试:
@Entity(
tableName = "cards",
indices = {
@Index(value = { "name", "deck_id" }, unique = true)
}
)
public class CardEntity {
//region Column Definitions
@PrimaryKey
@ColumnInfo(name = "id")
private Long id;
@NonNull
@ColumnInfo(name = "name")
private String name = "";
@NonNull
@ColumnInfo(name = "deck_id")
private Long deckId = 0L;
//endregion
//region Getters and Setters
(...)
//endregion
}@Entity(tableName = "decks")
public class DeckEntity {
//region Column Definitions
@PrimaryKey
@ColumnInfo(name = "id")
private Long id;
@NonNull
@ColumnInfo(name = "name")
private String name = "";
//endregion
//region Getters and Setters
(...)
//endregion
}https://stackoverflow.com/questions/-100005976
复制相似问题