Czy istnieje sposób na stworzenie wielokrotnego użytku podstawowego DAO klasy podstawowej z Android Room?Wielokrotnego użytku podstawowe DAO klasy podstawowej z Androidem Room
public interface BaseDao<T> {
@Insert
void insert(T object);
@Update
void update(T object);
@Query("SELECT * FROM #{T} WHERE id = :id")
void findAll(int id);
@Delete
void delete(T object);
}
public interface FooDao extends BaseDao<FooObject> { ... }
public interface BarDao extends BaseDao<BarEntity> { ... }
Nie udało mi się wymyślić żadnego sposobu osiągnięcia tego bez konieczności deklarowania tych samych członków interfejsu i napisania zapytania dla każdej podklasy. Kiedy mamy do czynienia z dużą liczbą podobnych DAO, staje się to bardzo żmudne ...
Opcja 'insert()', 'update()' oraz 'delete()' metody powinny działać jak jest jak rozumiem - Yigit napisał w kwestii, że należy to teraz wspierać. Metoda 'findAll()' musi zostać przepisana, aby podać nazwę tabeli. – CommonsWare
Cool. Właśnie znalazłem problem. Wygląda na to, że typowy typ zwrotów/argumentów będzie obsługiwany z poziomu alpha3: https://issuetracker.google.com/issues/62103620 – pqvst
@CommonsWare Czy naprawdę można przepisać findAll? Jeśli tak, to w jaki sposób? Myślałem, że nazwa tabeli musi być znana podczas kompilacji. –