我在 Room 中使用 关系添加了一对多的关系。 我参考 这篇文章编写了以下房间关系代码。
这篇文章告诉我们如何从数据库中读取值,但是将实体存储到数据库中会导致 userId
为空,这意味着这两个表之间没有关系。
我不确定什么是 insert
a User
和 List of Pet
进入数据库的理想方法,同时具有 userId
值。
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;
}
现在,为了从 DB 获取记录,我们使用以下 DAO
:
@Dao
public interface UserDao {
@Insert
fun insertUser(user: User)
@Query("SELECT * FROM User")
public List<UserWithPets> loadUsersWithPets();
}
剪辑
我已经在问题跟踪器上创建了这个问题 https://issuetracker.google.com/issues/62848977。希望他们会做一些关于它的事情。