Dodałem jeden do wielu relacji w pokoju przy użyciu Relation. Odwołałem się do this post, aby wpisać następujący kod dla relacji w pokoju.Android Room: Wstaw obiekty relacji używając Room
Post informuje, jak odczytać wartości z bazy danych, ale zapisanie encji w bazie danych spowodowało, że userId
było puste, co oznacza, że nie ma relacji między 2 tabelami.
Nie jestem pewien, co jest idealnym sposobem na insert
User
i List of Pet
do bazy danych, mając jednocześnie userId
wartość.
Podmiot 1) Użytkownik:
@Entity
public class User {
@PrimaryKey
public int id; // User id
}
2) Zwierzęta Podmiot:
@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;
}
teraz, aby pobrać rekordy z DB używamy po DAO
:
@Dao
public interface UserDao {
@Insert
fun insertUser(user: User)
@Query("SELECT * FROM User")
public List<UserWithPets> loadUsersWithPets();
}
EDIT
Stworzyłem ten problem https://issuetracker.google.com/issues/62848977 na trackerze emisyjnej. Mam nadzieję, że coś z tym zrobią.
Próbowałem tego samego używając 'Stream'. Mam tylko nadzieję, że jest lepszy sposób na zrobienie tego. –
Nie sądzę, że istnieje lepszy sposób, ponieważ dokumentacja mówi, że celowo pozostawił referencje z biblioteki: https://developer.android.com/topic/libraries/architecture/room.html#no-object- referencje – tknell
Utworzyłem ten problem https://issuetracker.google.com/issues/62848977 w narzędziu do śledzenia problemów. Mam nadzieję, że coś z tym zrobią. –