Android Room Fetch data with dynamici c имя таблицы - PullRequest
1 голос
/ 16 января 2020

Можно ли fetch data передать table name как parameter? Как то так.

@Query("SELECT id, name from :tableName")
fun getData(tableName: String): List<RandomModel>

Ответы [ 2 ]

1 голос
/ 16 января 2020

Попробуйте это

@Dao
interface RawDao {
 @RawQuery
 List<RandomModel> getData(SupportSQLiteQuery query);
}

 SimpleSQLiteQuery query = new SimpleSQLiteQuery("SELECT * FROM "+ tablename);
 List<RandomModel> models = rawDao.getUserViaQuery(query);
0 голосов
/ 16 января 2020

Я думаю, Room не поддерживает динамические c tableName.

У нас есть два способа:

1-In DAO, мы можем заменить tableName на фактическое имя таблицы, как определено в модели @Entity

2-Мы можем использовать @RawQuery следующим образом:

@Dao
 interface RawDao {
     @RawQuery
     User getUserViaQuery(SupportSQLiteQuery query);
 }
 SimpleSQLiteQuery query = new SimpleSQLiteQuery("SELECT * FROM User WHERE id = ? LIMIT 1",
         new Object[]{userId});
 User user2 = rawDao.getUserViaQuery(query);

Вы можете узнать больше на это

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