在父类中有多个对象类型。假设我有一个如下的College类
data class College(
@PrimaryKey
val id:String,
val name: String? = null,
val description: String? = null,
val groups: List<Group>? = null,
val status: String? = null,
)
data class Group(
@PrimaryKey
val id:String,
val name: String? = null,
val description: String? = null,
val students: List<Students>? = null,
)
这里的问题是在子表中没有关系id。我的意思是接收到的JSON没有给予大学内部团体与Groups表中collegeId的关系,也没有给出group表中学生的关系。
接收到的JSON如下
"college": [
{
"id": "collegeid",
"groups": [
"id": "groupid"
"name": "BCOM" // Here no collegeId is mentioned inside it
]
}
如果使用@Embedded关键字,则会引发“实体和POJO必须具有可用的公共构造函数”。
有没有用上面的JSON,我可以设置组内大学的id,并将其作为关系的外键。
我已经使用了Typeconverters,并且运行良好,但是现在我需要使用上述JSON类型在这些表之间创建关系。
我使用Gson解析
1条答案
按热度按时间mgdq6dx11#
我相信您可能会混淆如何使用关系/表。
如果您有
这将是一个表,其中groups列(理论上)将包含一个组列表,没有关系,因为只有一个列包含单个数据流(可能是JSON字符串)。
但是,如果您希望有一个包含College的表、一个包含Groups的表和一个包含Students的表,则您不会将Groups嵌入到College中,然后将Students嵌入到Groups中。
相反,如果你想从数据库关系的Angular 来处理这个问题。假设一个组必须属于一个且只有一个学院,而一个学生必须只属于一个组,那么你会得到沿着的东西:-
要获取包含相关组的学院,您可以创建一个类,其中父类(学院)具有@Embedded注解,子类(组)具有@Relation注解。例如:
工作示例
下面是一个工作示例,使用上面的方法添加(插入)3个College,然后添加6个Group。第一个College有3个相关的Group,第二个有2个,第三个有1个。
然后,该示例提取Colleges和相关的Groups,并将结果输出到日志。
学院以及相关团体学院
组(具有外键约束)
天道
TheDatabase(注意为简洁方便允许主线程处理)
活动代码(本例中为MainActivity)
*注尚未提供学院的状态,因此它们将为空。
结果日志包括:-
通过应用程序检查的数据库:-
和