Обработка сущности со списком списков сущностей в комнате - PullRequest
0 голосов
/ 02 ноября 2018

В моем приложении у меня есть объект 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 непосредственно из дао?

Спасибо за ваш ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...