基本上,有兩件事我不明白:物體和物體與對象列表如何在Android室中存儲對象?
說我收到來自服務器的對象列表。他們每個人都看起來是這樣的:
@Entity
public class BigObject {
@PrimaryKey
private int id;
private User user;
private List<SmallObject> smallObjects;
}
與這兩個對象的字段:
@Entity
public class User {
@PrimaryKey
private int id;
private String name;
@TypeConverters(GenderConverter.class)
public MyEnums.Gender gender;
}
@Entity
public class SmallObject {
@PrimaryKey (autoGenerate = true)
private int id;
private String smallValue;
}
他們是比這更復雜,從而廳建議我不能使用@TypeConverters:
error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
如何將此數據結構存儲在房間中?
一般來說,實體不會在Room中持有其他實體,無論是單獨還是列表。他們可能會將*外鍵*保存到其他實體。而其他結構,如視圖模型,可以容納任何需要的實體。因此,'BigObject'需要去掉'smallObjects'並用'userId'替換'user'作爲外鍵。 'User'和'SmallObject'將外鍵返回到'BigObject'。然後,建立一個視圖模型,或者你從'@ Query' DAO方法填充的東西,這些DAO方法檢索'BigObject',相關的'User'及其相關的'SmallObjects'。 – CommonsWare