Я пытаюсь сделать что-то вроде этого:
@Entity(tableName = "owner_table")
public class Owner {
@PrimaryKey public long id;
public String name;
public int age;
}
@Entity(tableName = "pet_table")
public class Pet {
@PrimaryKey public long petId;
public long owner_id;
public String petName;
}
public class OwnerAndPets {
@Embedded
public Owner owner;
@Relation(
parentColumn = "id",
entityColumn = "owner_id",
entity = Pet.class
)
public List<Pets> pets = new ArrayList<>();
public Owner getOwner() {
return owner;
}
public List<Pets> getPets(){
return pets;
}
}
, чтобы его можно было вызвать в OwnerDAO
@Dao
public interface OwnerDao {
@Transaction
@Query("SELECT * FROM owner_table WHERE id = :id")
LiveData<OwnerAndPets> getOwnerAndPets(long id);
}
, чтобы потом можно было выбрать питомцев из ViewModel, как это:
getOwnerAndPets(ownerId).observe(mContextWeakReference.get(), new Observer<OwnerAndPets>() {
@Override
public void onChanged(OwnerAndPets ownerAndPets) {
List<Pets> pets = ownerAndPets.getPets();
}
});
До сих пор это компилируется, но ownerAndPets.getPets (). Size всегда равен 0.
Одна из проблем здесь, может быть, я у меня есть отдельный репозиторий (PetsRespository) и DAO (PetsDAO) для @ Insert-ion of Pets, но опять же я с трудом понимаю, как этот интерфейс @Embedded должен действовать за кулисами, я просто предположил, что если владелец и Таблицы Pets инициализируются в одном и том же экземпляре базы данных, это pojo OwnerAndPets связывает обе таблицы.
Так что мне нужно сделать? Что я делаю не так?