【问题标题】:Room @Query annotation string field without quotationsRoom @Query 注释字符串字段不带引号
【发布时间】:2019-04-16 09:42:23
【问题描述】:

我有一个这样的 DAO 方法:

@Query("SELECT * FROM Libs where :field like :search")
fun findLib(search:String,field:String): List<Lib>

我想按原样替换 field,但 Room 在生成的代码中为其添加了引号。 比如我想用findLib("james%","author")来生成这个SQL:

SELECT * FROM Libs where author like "james%"

但它会生成这个:

SELECT * FROM Libs where "author" like "james%" 

我怎样才能强制它不嵌入引号?

【问题讨论】:

    标签: database sqlite android-room androidx


    【解决方案1】:

    据我所知,SQLite 不支持列名参数。因此,您正在滥用 Room。正确的用例是这样的:

    @Query("SELECT * FROM Libs WHERE author LIKE :search")
    fun findLib(search:String): List<Lib>
    

    用法:findLib("james%")

    【讨论】:

      猜你喜欢
      • 2019-04-05
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      相关资源
      最近更新 更多