Как написать один в (множество pojos двух встроенных объектов) в Android Room - PullRequest
2 голосов
/ 02 июля 2019

Как мне написать отношение один ко многим, где множество - это pojo двух других встроенных сущностей? Может быть несколько B для одного A, но только один B для одного A в каждом списке данных.

Вот упрощение моего кода.

@Entity(tableName = "as")
public class A{
    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "a_id")
    private int mId;

    @ColumnInfo(name = "a_type")
    private String mType;

    //getters and setters
}

@Entity(tableName = "bs")
public class B{
    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "b_id")
    private int mId;

    @ColumnInfo(name = "b_type")
    private String mType;

    @ColumnInfo(name = "list_id")
    private int mListId;

    //getters and setters
}


@Entity(tableName = "data_lists")
public class DataList{
    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "data_list_id")
    private int mId;

    //getters and setters
}

public class AandB {
    @Embedded
    private A mA;

    @Embedded
    private B mB;

    //getters and setters
}

public  class DataListWithAandBs{
    @Embedded
    private DataList mDataList;

    @Relation(
            parentColumn = "data_list_id",
            entityColumn = "list_id")
    private List<AandB> mAandBList;

    //getters and setters
}

@Dao
public interface DataListWithAandBsDao {

    @Query("SELECT * FROM data_lists LEFT JOIN (SELECT * FROM as LEFT JOIN bs ON a_type = b_type) ON list_id = data_list_id")
    LiveData<List<DataListWithAandBs>> getDataListsWithAsandBs();
}

Когда я компилирую, я получаю сообщение об ошибке: класс должен быть либо @Entity, либо @DatabaseView. Я не хочу, чтобы список был сущностью, хотя я хочу, чтобы это был список Pojos. Можно ли это сделать с комнатой?

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