【发布时间】:2017-12-11 05:13:15
【问题描述】:
这里是示例 POJO:
@Entity
public class User {
@PrimaryKey
public String id;
}
@Entity
public class Pet {
@PrimaryKey
public String id;
public String userId;
public String petName;
}
@Entity
public class Category {
@PrimaryKey
public String id;
public String petId;
public String categoryName;
}
这是我的 UsersWithPets 类,用于获取所有用户以及宠物。
public class UserWithPets {
@Embedded
public User user;
@Relation(parentColumn = "id", entityColumn = "userId", entity = Pet.class)
public List<Pet> pets;
}
我的用户道
@Dao
public interface UserDao {
@Query("SELECT * FROM User")
List<UserWithPets> loadUsersWithPets();
}
和用户数据库
@Database(entities = {User.class, Pet.class, Category.class}, version = 1)
@TypeConverters(DateConverter.class)
public abstract class UsersDb extends RoomDatabase {
private static UsersDb INSTANCE;
public abstract UserDao userDao();
public static UsersDb getInstance(Context context) {
if (INSTANCE == null) {
synchronized (UsersDb.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(), UsersDb.class,
"User.db")
.build();
}
}
}
return INSTANCE;
}
}
“UserWithPets”嵌入用户对象并与其关联的“Pet”列表相关,但如何获取“Category”列表>" 如果我的“Pet” POJO 可以与“Category”有一对多关系。
此外,用户 DAO 通过映射 user.id 和 pet.userId 之间的 id 仅返回所有“User”及其“ListPet>”,如果我的“Pet”POJO 可以有许多“Category”(类别列表),我如何创建我的 DAO 和抽象数据库类,以便查询特定的“User” id 将返回“User” 对象及其“宠物列表”和个人“宠物” ” 包含一个“类别列表” 并查询所有将返回所有“用户列表”,其中每个用户都包含一个“宠物列表” >”并且每个宠物都包含一个“类别列表”
【问题讨论】:
-
检查this
标签: android android-room android-architecture-components