Tôi đã thêm một vào nhiều mối quan hệ trong Room bằng cách sử dụng Relation . Tôi đã tham khảo bài đăng này để viết mã sau cho mối quan hệ trong Phòng.
Bài đăng cho biết cách đọc các giá trị từ cơ sở dữ liệu nhưng việc lưu trữ các thực thể vào cơ sở dữ liệu dẫn userId
đến trống, có nghĩa là không có mối quan hệ nào giữa 2 bảng.
Tôi không chắc chắn cách lý tưởng để là những gì insert
một User
và List of Pet
vào cơ sở dữ liệu trong khi có userId
giá trị.
1) Thực thể người dùng:
@Entity
public class User {
@PrimaryKey
public int id; // User id
}
2) Thực thể thú cưng:
@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;
}
Bây giờ để tìm nạp các bản ghi từ DB, chúng tôi sử dụng như sau DAO
:
@Dao
public interface UserDao {
@Insert
fun insertUser(user: User)
@Query("SELECT * FROM User")
public List<UserWithPets> loadUsersWithPets();
}
BIÊN TẬP
Tôi đã tạo sự cố này https://issuetracker.google.com/issues/62848977 trên trình theo dõi sự cố. Hy vọng rằng họ sẽ làm điều gì đó liên quan đến nó.