我在房間中使用Relation添加了一對多關係。 我參考this post來寫下下面的關係在房間中的代碼。Android室:使用房間插入關係實體
該帖子告訴如何從數據庫中讀取值,但將實體存儲到數據庫中導致userId
爲空,這意味着2個表之間沒有關係。
我不確定什麼是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的問題跟蹤器。希望他們會爲此做點事情。
我用'Stream'試了同樣的東西。我只是希望有更好的方法來做到這一點。 –
我不認爲有更好的方法,因爲文檔說他們故意將引用從庫中留出:https://developer.android.com/topic/libraries/architecture/room.html#no-object-引用 – tknell
我在問題跟蹤器上創建了此問題https://issuetracker.google.com/issues/62848977。希望他們會爲此做點事情。 –