В моем приложении у меня есть объект UserPet, который имеет «name», «id» и список объектов PetClothe. Мой объект PetClothe имеет "имя", "идентификатор" и список одежды. Мой объект одежды имеет имя и идентификатор.
Чтобы моя БД соответствовала этой структуре, я создал сущность Пользователь, Пэт (с ФК на Пользователе) и Клот (с ФК на Клоте). Я могу сохранить свои данные, но не могу получить UserPet напрямую с BD. Я должен создать его вручную, многократно запрашивая базу данных (во-первых, чтобы получить пользователей, во-вторых, чтобы получить домашних животных для конкретного пользователя, и в-третьих, чтобы получить одежду для конкретного питомца). Я пробую это решение (https://developer.android.com/reference/android/arch/persistence/room/Relation),, но оно не работает при применении его к моему сценарию (получено сообщение об ошибке «ошибка: класс сущностей должен быть аннотирован @Entity»). Вот код, который я пробовал:
@Entity
public class ClotheEntity
{
@PrimaryKey
private
int id;
private int petId;
private String name;
}
@Entity
public class PetEntity
{
@PrimaryKey
private
int id;
private int userId;
}
@Entity
public class UserEntity
{
@PrimaryKey
private int _id;
private String _name;
}
public class PetClothe
{
public int _id;
public String _name;
public String _userId;
@Relation(parentColumn = "_id", entityColumn = "petId")
public List<ClotheEntity> clothes;
}
public class UserPet
{
public int _id;
public String _name;
@Relation(parentColumn = "_id", entityColumn = "_userId")
public List<PetClothe> _pet;
}
@Dao
public abstract class UserPetDao
{
@Query("SELECT _id, _name from UserEntity")
public abstract List<UserPet> loadUserAndPets();
}
@Database(entities = {UserEntity.class, PetEntity.class, ClotheEntity.class}, version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase
{
public abstract UserPetDao userPetDao();
}
Кто-нибудь знает, возможно ли получить объект UserPet непосредственно из дао?
Спасибо за ваш ответ.