我是Android初学者开发人员.我正在创建stationArrivalInformation应用程序.
@Entity
data class StationEntity(
@PrimaryKey val stationName: String,
val isFavorite: Boolean = false
)
@Entity
data class SubwayEntity(
@PrimaryKey val subwayId: Int
)
@Entity(primaryKeys = ["stationName", "subwayId"])
data class StationSubwayCrossRefEntity(
val stationName: String,
val subwayId: Int
)
data class StationWithSubwaysEntity(
@Embedded val station: StationEntity,
@Relation(
parentColumn = "stationName",
entityColumn = "subwayId",
entity = SubwayEntity::class,
associateBy = Junction(
StationSubwayCrossRefEntity::class,
parentColumn = "stationName",
entityColumn = "subwayId"
)
)
val subways: List<SubwayEntity>
)
我构建了一个具有多对多关系的数据类。
1.测站表
enter image description here
2.地铁站台
enter image description here
3.对照表
enter image description here
如果你查看DAO文件:
x一个一个一个一个x一个一个二个x
1.在这里,stationDao. getStationWithSubways()的结果为null。2我参考了Android官方文档并应用了它,但我没有得到想要的结果。3为什么?
我期望在一个车站乘多条地铁
enter image description here
1条答案
按热度按时间lmvvr0a81#
〈参数的类型必须是一个用@Entity标注的类或者它的集合/数组。〉-〉如何解决?
房间没有任何关于站类的东西(根据所示的类),因此它不知道如何处理:-
因为没有这样的
@Entity
注解类。我认为解决办法是
但是,由于构建日志中的警告,您可能会遇到问题:-
您可能需要考虑的另一个警告是
如果您使用以下选项,则两者都不会显示:-
然后,您必须用途:-
subway.subwayId
而不是subway.subwayId.toString()
我希望在正常运营的情况下,
您会的。使用上面建议的更改(以及其他一些为了简洁/方便而在主线程上运行的更改),一个适当的@Database注解类如下:-
以及活动中的以下内容,以证明:
然后日志(第一次运行时)包括(如预期):-