Sala Android: insira entidades de relação usando a Sala
Adicionei um a muitos relacionamentos no Room usandoRelação. Eu me referi aesta postagem para escrever o seguinte código para relação em Room.
A postagem informa como ler os valores do banco de dados, mas o armazenamento das entidades no banco de dados resultou emuserId
estar vazio, o que significa que não há relação entre as 2 tabelas.
Não sei ao certo qual é a maneira ideal deinsert
a User
eList of Pet
no banco de dados enquanto tiveruserId
valor.
1) Entidade do usuário:
@Entity
public class User {
@PrimaryKey
public int id; // User id
}
2) Entidade do animal de estimação:
@Entity
public class Pet {
@PrimaryKey
public int id; // Pet id
public int userId; // User id
public String name;
}
3) POWO UserWithPets:
// 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;
}
Agora, para buscar os registros do DB, usamos o seguinteDAO
:
@Dao
public interface UserDao {
@Insert
fun insertUser(user: User)
@Query("SELECT * FROM User")
public List<UserWithPets> loadUsersWithPets();
}
EDITAR
Eu criei este problemahttps://issuetracker.google.com/issues/62848977 no rastreador de problemas. Espero que eles façam algo a respeito.