当前位置: 首页 > 知识库问答 >
问题:

室内持久性库无法使用like子句

琴镜
2023-03-14

我正在我的项目中使用room persistent library。我试图在查询中使用'like'子句,但我无法使用。我尝试过编译时(查询)和运行时查询(原始查询)。它既没有给出任何类型的异常,也没有给出任何输出。

我尝试过以下方法,但都不奏效:-

>

  • 编译时查询-

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

    罗奎尔-

    @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);
    

    ComileSdkVersion 27

    库使用-实现"android.arch.persistence.room:运行时:1.1.0-beta3"注释处理器"android.arch.persistence.room:编译器:1.1.0-beta3"

    请让我知道如何运行这些类型的查询。

  • 共有3个答案

    柴赞
    2023-03-14

    您必须在符号“%”之前添加前缀和后缀,以执行模式搜索,例如:

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

    然后声明DAO方法,例如:

    @Query("SELECT * FROM track_table WHERE title LIKE :param" + " OR artist LIKE :param" + " OR album like :param")
    List< Track > search(String param);
    
    公羊奇
    2023-03-14

    查询的语法不正确。根据留档,查询类似于

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

    这里的参数和用LIKE:编写的键必须匹配。

    阅读Android Room——用LIKE选择查询,这在kotlin中,但可能会清除这个逻辑。

    弘和同
    2023-03-14

    房间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>>
    
     类似资料:
    • 我已经进入了几天,尽管我学到了很多,但我开始绝望了。 我已经尝试了这个极好问题的所有建议: 没有名为的EntityManager的持久性提供程序 我曾经使用无处不在的HibernateUtil类来处理这个问题,但是被告知要在这里转移到一个简单的JPA风格: Spring-RESTful控制器方法改进建议 不幸的是,我无法让豆子注射在spring boot中正常工作。以下是我的尝试: Spring

    • 我所要做的就是从insert中获取作为long的返回值。我得到了,但它不起作用,我从返回的值中返回0。我正在使用一个、存储库和,如谷歌代码实验室中所述。在房间里插入后,我一直关注这篇文章。 球员级别 道 存储库 视图模型 活动

    • Android等级插件版本:7.0.4 Gradle版本:7.3.3 Gradle JDK:11.0.10(Android Studio默认JDK) 我一直在努力寻找解决这个问题的具体方法。Android Room kot Lin Kapt IntelliJ MAC OS Catalina:Java . lang . unsatisfiedlinkerror:org . SQLite . core

    • 问题内容: 我遇到了使用EntityManager将元素持久保存到数据库的问题。根据我发现的答案,我在DaoJpa中尝试了这4种方法来执行此操作,但仍然失败。在这里,我附上了我尝试过的四种方法: 控制器部分中的代码: 1.道霸: 不起作用! 2。 我得到的例外:没有交易在进行中 3。 我得到的异常:不允许在共享的EntityManager上创建事务-使用Spring事务或EJB CMT代替 4。

    • 我想使用房间数据库,但在构建应用程序时出现以下错误: 执行组织时出错。喷气式飞机。科特林。格拉德尔。内部的KaptExecution公司 和一些这样的错误: 错误:不确定如何将游标转换为此方法的返回类型(java.util.ArrayList 我将数据库与这些类一起使用: 书签实体: 书签数据库: 书签DAO: 我为房间添加此依赖项: 并在构建顶部添加应用插件:“kotlin kapt”。grad

    • 有没有更简单的方法可以查看Android Studio中使用Room Persistence Library创建的数据库的内容?