Android Room сохранение вложенных Entity

175
11 июня 2018, 16:50

Недавно начал разбираться с android разработкой. Никак не могу понять как с помощью Room сохранить в БД вот такой объект:

@Entity(tableName = "test_class")
public class TestClass
{
    @Entity(tableName = "inner_one")
    public static class InnerClassOne
    {
        @PrimaryKey(autoGenerate = true)
        @ColumnInfo(name = "id")
        private long idInnerOne;
        @ColumnInfo(name = "field")
        private double field;
        // getters and setters
    }
    @Entity(tableName = "inner_two")
    public static class InnerClassTwo
    {
        @PrimaryKey(autoGenerate = true)
        @ColumnInfo(name = "id")
        private long idInnerTwo;
        @ColumnInfo(name = "str")
        private String str;
        // getters and setters
    }
    @Entity(tableName = "inner_tree")
    public static class InnerClassTree
    {
        @PrimaryKey(autoGenerate = true)
        @ColumnInfo(name = "id")
        private long idInnerTree;
        @ColumnInfo(name = "id_test_class")
        @ForeignKey(entity = TestClass.class, parentColumns = "id", childColumns = "id_test_class",
        onDelete = ForeignKey.CASCADE, onUpdate = ForeignKey.CASCADE)
        long idTest;
        @ColumnInfo(name = "ser")
        private int ser;
        @ColumnInfo(name = "vid")
        private int vid;
        // getters and setters
    }
    @PrimaryKey(autoGenerate = true)
    private long id;
    @ColumnInfo(name = "id_one")
    @ForeignKey(entity = InnerClassOne.class, parentColumns = "id", childColumns = "id_one",
    onDelete = ForeignKey.CASCADE, onUpdate = ForeignKey.CASCADE)
    private long idOne;
    @ColumnInfo(name = "id_two")
    @ForeignKey(entity = InnerClassTwo.class, parentColumns = "id", childColumns = "id_two",
    onDelete = ForeignKey.CASCADE, onUpdate = ForeignKey.CASCADE)
    private long idTwo;

    private InnerClassOne innerOne;
    private InnerClassTwo innerTwo;
    private List<InnerClassTree> lst;
    // getters and setters
}

Какие аннотации надо написать для полей innerOne, innerTwo и lst? И что прописать в Dao?

READ ALSO
Вложенные циклы for БЕЗ скобок

Вложенные циклы for БЕЗ скобок

В этом случае программа выйдет из обоих циклов или только из внутреннего?

167
Обнаружить StackOverflowError в других потоках

Обнаружить StackOverflowError в других потоках

Я делаю интерпретатор языка PrologЯзык основан на рекурсии, и неправильно написанные программы часто приводят к переполнению стека

162
Произведение смежных чисел массива

Произведение смежных чисел массива

решал алгоритм и вот встала задача решить алгоритм на вход дается массив чисел надо найти наибольшее произведение смежных чисел я решил...

183
Проблемы с совместной работой EditText и ListView

Проблемы с совместной работой EditText и ListView

На активности есть ListView и EditTextListView с множественным выбором

198