Передача строки для использования в качестве части запроса Room - PullRequest
0 голосов
/ 06 марта 2020

Почему это не работает в комнате?:

val dataSourceFactory =
    database.gameDao.getGames("Game.platforms LIKE '%XONE%'")

@Query("SELECT * FROM Game WHERE :likeClause")
fun getGames(likeClause: String): DataSource.Factory<Int, Game>

Но это работает?:

@Query("SELECT * FROM Game WHERE Game.platforms LIKE '%XONE%'")
fun getGames(): DataSource.Factory<Int, Game>

Есть ли способ передать строку, которая может быть частью запроса?

РЕДАКТИРОВАТЬ: я знаю, что это не правильный способ формирования одного предложения LIKE, но я на самом деле пытаюсь передать несколько предложений LIKE. Поэтому я хочу, чтобы текст вводился непосредственно в запрос, но Room, похоже, не хочет, чтобы я это делал.

1 Ответ

0 голосов
/ 22 марта 2020

Вы говорите о Dynami c SQL, и я не думаю, что это возможно с комнатой. то, что будет работать, это

@Query("SELECT * FROM Game WHERE Game.platforms LIKE :likeClause1 AND Game.publisher LIKE :likeClause2")
fun getGames(likeClause1: String, likeClause2: String): DataSource.Factory<Int, Game>

, и вы можете использовать либо AND, либо OR, если необходимо, и если вы хотите игнорировать одно из подобных предложений, просто пропустите пустую строку

...