gpt4 book ai didi

android - 如何在 android 房间中表示嵌套的一对多关系?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:03:09 24 4
gpt4 key购买 nike

这里是样例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

@Dao
public interface UserDao {
@Query("SELECT * FROM User")
List<UserWithPets> loadUsersWithPets();
}

和 userdb

@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”及其“List<Pet>”,方法是在 user.id 之间映射 id。和 pet.userId ,如果我的“Pet”POJO 可以有很多“Category”(类别列表),我如何创建我的 DAO 和抽象数据库类以便查询特定的“User”id 将返回“User”对象及其“List of Pets”和单个“Pet” >”包含“类别列表”并查询所有将返回所有“用户列表”,其中每个用户包含一个“宠物列表”,每个 Pet 都包含一个“类别列表

最佳答案

您需要将查询映射到 PetWithCategories 等 POJO/Java Bean 类:

public class UserWithPets {
@Embedded
public User user;
@Relation(parentColumn = "id", entityColumn = "userId", entity = Pet.class)
public List<PetWithCategories> pets;
}

public class PetWithCategories {
@Embedded
public Pet pet;
@Relation(parentColumn = "id", entityColumn = "petId")
public List<Category> categories;
}

关于android - 如何在 android 房间中表示嵌套的一对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44961723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com