【发布时间】:2017-11-23 19:55:24
【问题描述】:
我使用Relation 在 Room 中添加了一对多关系。 我参考this post为Room中的关系编写了以下代码。
这篇文章讲述了如何从数据库中读取值,但将实体存储到数据库中导致 userId 为空,这意味着这两个表之间没有关系。
我不确定在具有userId 值的同时将insert、User 和List of Pet 放入数据库的理想方法是什么。
1) 用户实体:
@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。希望他们会为此做点什么。
【问题讨论】:
-
所以他们说“关系”是 2.2 更新中的优先级。当前版本是 2018 年 12 月 4 日的“Room 2.1.0-alpha03”。
-
是的,刚刚阅读了他们在问题跟踪器中的评论。这需要时间,同时您可以使用解决方法
-
他们降低了问题的优先级(2021 年)。
标签: android android-room android-architecture-components