В комнате постоянная библиотека не может использовать как пункт - PullRequest
0 голосов
/ 03 мая 2018

Я использую комнатную постоянную библиотеку в своем проекте. Я пытаюсь использовать предложение «как» в запросе, но я не могу использовать. Я пробовал и время компиляции (Query) и запрос времени выполнения (Raw Query). Ни он не дает никаких исключений, ни выводов.

Я пробовал следующие способы, но ни один из них не работал: -

  1. Запрос времени компиляции -

    @Query("select * from recipe where type_of_diet like '%vegetarian%' ")
    public abstract DataSource.Factory<Integer, RecipeListPojo> 
    getRecipeListVeg();
    
  2. RawQuery -

    @RawQuery(observedEntities = RecipeListPojo.class)
    public abstract DataSource.Factory<Integer,RecipeListPojo> 
    getAllRecipesList(SupportSQLiteQuery sqLiteQuery);
    
    String query="select * from recipe  where type_of_diet like '%vegetarian%' ";
    SimpleSQLiteQuery simpleSQLiteQuery = new SimpleSQLiteQuery(query);
    recipeDao.getAllRecipesList(simpleSQLiteQuery);
    

compileSdkVersion 27

Библиотека используется - реализация "android.arch.persistence.room:runtime:1.1.0-beta3" annotationProcessor "android.arch.persistence.room:compiler:1.1.0-beta3"

Пожалуйста, дайте мне знать, как я могу выполнять запросы такого типа.

Ответы [ 3 ]

0 голосов
/ 03 августа 2018

Комната 1.1.1 + RxJava2 + Kotlin работает нормально:

@Query("SELECT * FROM user WHERE name LIKE '%Tom%' ")
fun getUsers(): Single<List<UserEntity>>

С параметром:

@Query("SELECT * FROM user WHERE name LIKE '%' || :name || '%' ")
fun getUsers(name: String): Single<List<UserEntity>>
0 голосов
/ 05 сентября 2018

Вы должны добавить перед символом «%» в качестве префикса и постфикса вашей строки, например:

String param = "%" + mMyString + "%";

Затем объявите свой метод DAO, например:

@ Query ("SELECT * FROM track_table, ГДЕ название LIKE: param" + "ИЛИ LIKE исполнителя: param" + "ИЛИ альбом как: param") Поиск по списку

(String param);

Надеюсь, это поможет.

0 голосов
/ 03 мая 2018

Синтаксис неверен для вашего запроса. Согласно документации , запрос будет похож на

@Query("SELECT * FROM user WHERE user_name LIKE :name AND last_name LIKE :last")
public abstract List<User> findUsersByNameAndLastName(String name, String last);

Здесь arguments и key written with LIKE : должны совпадать.


Read Android Room - Выберите запрос с помощью LIKE , что в kotlin, но может очистить эту логику.

...