Я учусь Android Программирование для начинающих. Я пытаюсь сделать что-то вроде этого:
@Entity(table_name = "family_table")
class Human {
private String name;
private int age;
//Here is my problem
private List<Human> children = new ArrayList<Human> ();
public Human(String name, int age) {
this.name = name;
this.age = age;
}
public void haveChildren(String name, int age) {
children.add(new Human(name,age));
}
public String getTitle() {
return name;
}
public int getDescription() {
return age;
}
public int totalChildren() {
return children.size();
}
}
Позже из основного класса я хочу использовать этот класс. Например:
public class Test{
public static void main(String[] args) {
Human person1 = new Human("Alex",32);
person1.haveChildren("Jhon",6);
person1.haveChildren("Abraham",3);
System.out.println(person1.totalChildren());
}
}
Комната предоставляет методы для хранения данных, такие как int, Boolean, String и c., Но я не могу хранить пользовательские объекты внутри записей комнаты. Он говорит: Cannot figure out how to save this field into database.You can consider adding a type converter for it
.
Я искал inte rnet для решения. Что бы я ни узнал, есть в основном два типа решения.
- TypeConverting
- Использование @ foreignKeys
Эти два метода помогают понять процесс. Но проблема для 1-го решения заключается в том, что каждый раз, когда я создаю новый дочерний объект (который хранится в переменной List<Human> children
), я должен преобразовать этот List<object>
в формат JSON (для решения 1) и если я хочу получить данные обратно, я снова конвертирую их в List<object>
. Благодаря этому решению, оно кажется очень неэффективным для больших List<object>
.
Для решения 2, поскольку я ссылаюсь на объект того же типа, почему я должен создать для него еще одну таблицу (сущность) ? Разве я не могу использовать ту же сущность (family_table
для моего примера)?
Если мне нужно создать другую сущность, как я могу это сделать? (Учебное пособие по решению 2 вводит меня в заблуждение как новичка.)
Существует ли какое-либо другое решение в такой ситуации?