我在Room中使用Relation添加了一个一对多的关系。我参考了这篇帖子编写了关于Room中关系的以下代码。
这篇帖子告诉了如何从数据库读取值,但是将实体存储到数据库中导致userId
为空,这意味着两个表之间没有关系。
我不确定在具有userId
值的情况下如何将User
和List of Pet
插入到数据库中。
1) User实体:
@Entity
public class User {
@PrimaryKey
public int id; // User id
}
2) 宠物实体:
@Entity
public class Pet {
@PrimaryKey
public int id; // Pet id
public int userId; // User id
public String name;
}
3) UserWithPets POJO:
// Note: No annotation required at this class definition.
public class UserWithPets {
@Embedded
public User user;
@Relation(parentColumn = "id", entityColumn = "userId", entity = Pet.class)
public List<Pet> pets;
}
现在我们使用以下 DAO
来从数据库中获取记录:
@Dao
public interface UserDao {
@Insert
fun insertUser(user: User)
@Query("SELECT * FROM User")
public List<UserWithPets> loadUsersWithPets();
}
编辑
我在问题追踪器上创建了这个问题https://issuetracker.google.com/issues/62848977。希望他们会对此采取一些行动。