Комната: Используйте класс, который расширяет ArrayList как Entity - PullRequest
0 голосов
/ 03 сентября 2018

Я делаю приложение для Android, используя Библиотеку комнат. У меня есть класс, который extends ArrayList класс, как это:

@Entity(tableName = "the_table_name")
public class MyDemoClass<E extends AnotherDemoClass> extends ArrayList<E> {

  @PrimaryKey
  @NonNull
  @ColumnInfo(name = "id")
  private String id;

  @ColumnInfo(name = "title")
  private String title;

  @ColumnInfo(name = "creationdate")
  private Date creationDate;

  // Other stuff
}

Я пытаюсь добавить этот класс, который позволяет только классам, которые расширяют в нем AnotherDemoClass , в качестве объекта для Room, но при этом возникает ошибка времени компиляции:

error: cannot find symbol
        _result = new MyDemoClass<E>();
                                  ^
  symbol:   class E
  location: class MyDemoClassDao_Impl

Я больше часа пытался решить эту проблему без удачи.

EDIT: Это мой Dao:

@Dao
public interface MyDemoClassDao {

  @Insert(onConflict = OnConflictStrategy.REPLACE)
  void insert(MyDemoClass<AnotherDemoClass> myDemoClass);

}

Если ваш ответ может помочь, пожалуйста, поделитесь им со мной!

1 Ответ

0 голосов
/ 03 сентября 2018

Я бы хотел использовать MyDemoClass в качестве плейлиста. Я бы добавил песни в этот плейлист и сохранил бы их в базе данных

MyDemoClass будет обычным Java-объектом (POJO) и будет иметь поля, соответствующие простым свойствам списка воспроизведения, например String, который будет служить именем, которое пользователи могут предоставлять и видеть в реестрах. плейлистов. MyDemoClass будет не подклассом ArrayList.

Song будет другим POJO и будет иметь поля, которые соответствуют простым свойствам песни, таким как String для ее заголовка.

Поскольку в списке воспроизведения может быть несколько песен, а песня может появляться в нескольких списках воспроизведения, вам необходимо создать объект, представляющий это объединение, с отношениями внешнего ключа обратно к объектам списка воспроизведения и песни.

Использование отношений с внешним ключом слегка освещено в Документация по комнате . Это должно быть отражено в любой книге, которая проводит значительное время в комнате. Например, вот предварительный выпуск моей главы об отношениях M: N в комнате (из этой книги ).

...