He agregado una relación a muchas en Room usando Relation . Me referí a esta publicación para escribir el siguiente código de relación en Room.
La publicación dice cómo leer los valores de la base de datos, pero almacenar las entidades en la base de datos resultó en userId
estar vacío, lo que significa que no hay relación entre las 2 tablas.
No estoy seguro de lo que es la forma ideal para insert
una User
y List of Pet
en la base de datos mientras que tener userId
valor.
1) Entidad de usuario:
@Entity
public class User {
@PrimaryKey
public int id; // User id
}
2) Entidad de mascota:
@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;
}
Ahora, para obtener los registros de la base de datos, usamos lo siguiente DAO
:
@Dao
public interface UserDao {
@Insert
fun insertUser(user: User)
@Query("SELECT * FROM User")
public List<UserWithPets> loadUsersWithPets();
}
EDITAR
He creado este problema https://issuetracker.google.com/issues/62848977 en el rastreador de problemas. Con suerte, harán algo al respecto.