Ich habe eine zu vielen Beziehungen in Room mithilfe von Relation hinzugefügt . Ich habe auf diesen Beitrag verwiesen, um den folgenden Code für die Beziehung in Raum zu schreiben.
Der Beitrag erklärt, wie die Werte aus der Datenbank gelesen werden, aber das Speichern der Entitäten in der Datenbank führte userId
dazu, dass sie leer waren, was bedeutet, dass zwischen den beiden Tabellen keine Beziehung besteht.
Ich bin mir nicht sicher, was der ideale Weg zu insert
einer User
und List of Pet
in die Datenbank ist, während ich userId
Wert habe.
1) Benutzerentität:
@Entity
public class User {
@PrimaryKey
public int id; // User id
}
2) Haustierentität:
@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;
}
Um die Datensätze aus der Datenbank abzurufen, verwenden wir Folgendes DAO
:
@Dao
public interface UserDao {
@Insert
fun insertUser(user: User)
@Query("SELECT * FROM User")
public List<UserWithPets> loadUsersWithPets();
}
BEARBEITEN
Ich habe dieses Problem https://issuetracker.google.com/issues/62848977 im Issue-Tracker erstellt. Hoffentlich werden sie etwas dagegen unternehmen.