我正在使用Android的房间数据库,并且在理解如何:
时遇到了一些大问题Person
时,它会添加所有变量,例如List<Shoe>
,List<Pet>
等也是数据库。创建关系,以便在检索Person
时,检索其所有字段,例如Pet, Shoe, Shirt
等。(不确定是什么类型的查询)
执行简单查询,例如Retrieve Person where
shoe.name = "boot"
;
我知道您必须使用外键关系与对象列表,否则使用单个对象可以使用@Embed
或@TypeConverter
示例代码如下所示;
@Entity(tableName = "person")
public class Person {
@PrimaryKey
@NonNull
private String personId;
private List<Pet> pets;
private List<Shoe> shoes;
private List<Shirt> shirts;
}
@Entity(foreignKeys = {
@ForeignKey(
entity = Person.class,
parentColumns = "personId",
childColumns = "personIdFk"
)
})
public class Pet {
String petId;
String name;
String personIdFk; //Foreign key to person
}
@Entity(foreignKeys = {
@ForeignKey(
entity = Person.class,
parentColumns = "personId",
childColumns = "personIdFk"
)
})
public class Shoe {
String shoeId;
String name;
String personIdFk; //Foreign key to person
}
@Entity(foreignKeys = {
@ForeignKey(
entity = Person.class,
parentColumns = "personId",
childColumns = "personIdFk"
)
})
public class Shirt {
String shirtId;
String name;
String personIdFk; //Foreign key to person
}
答案 0 :(得分:4)
由于某些potential issues with lazy loading,会议室不直接支持此功能,但有一些DAO技巧可能。您需要明确处理插入,并且一旦您需要POJO来包装所有内容,就可以查询所有内容。
myGrid.DataBindings.Clear(); // not working
为简洁起见,省略了构造函数,getter和setter。