我有以下课程:
class DutyDay(
val date: Date,
val hasStby:Boolean,
val standByStart: Time?,
val standByEnd: Time?,
val showTime: Time,
val closingTime: Time,
val dutyTime: Float
)
以及另一个类,它将包含上述类的对象:
@Entity(tableName = "tour_table")
data class Tour(
@PrimaryKey
val day1: DutyDay,
val day2: DutyDay?=null,
val day3: DutyDay?=null,
val day4: DutyDay?=null,
val day5: DutyDay?=null,
val day6: DutyDay?=null,
val day7: DutyDay?=null,
val totalHours: Float
)
每个“DutyDay”实例的最小值为1 DutyDays (因此day1不为null),最多为7 DutyDays。旅游名单将存放在房间里。
我是这样做的,所以我不必在旅游中声明49个变量(每DutyDay 7个变量乘以7 DutyDays).
这样做合适吗?day1 to day7是在旅游类的构造函数中正确的位置,还是应该进入类的主体(大括号)?当我意识到我在开始时犯了一个根本的错误时,我只想避免在编码过程中遇到更多的麻烦。
对不起,我很新,谢谢你的回答。
发布于 2020-10-12 20:59:48
与其静态地定义每次巡演的天数,不如重新开始,因为应该用一对多关系注释正确地表示这样的@Relation
:
@Entity(tableName = "tours")
data class Tour(
@PrimaryKey val tourId: Long,
...
)
@Entity(tableName = "days")
data class Day(
@PrimaryKey val dayId: Long,
val tourId: Long,
...
)
data class TourWithDays(
@Embedded val tour: Tour,
@Relation(parentColumn = "tourId", entityColumn = "dayId")
val days: List<Day>
)
DAO方法:
@Transaction
@Query("SELECT * FROM tours")
fun getAllToursWithDays(): List<TourWithDays>
这将是一个比你所拥有的更灵活的(就每次旅游的天数而言)。不需要存储totalHours
,因为可以通过SQLite域聚合来计算它们。如果您设计了一个关系数据模型,这可能会使您的方法失效并确认此方法。
https://stackoverflow.com/questions/64324986
复制相似问题