android - 是否可以在 android Room Query 中使用 StringFormat 或 Constant Variable

标签 android database android-sqlite android-room

我想使用公共(public)常量变量 Association.MEMBER_STATUS_APPROVED 通过以下房间查询来查询用户关联列表。

@Query("SELECT * FROM Association WHERE memberStatus = " + Association.MEMBER_STATUS_APPROVED)
LiveData<List<Association>> loadUserAssociations();

但是,room 在构建时给我 [SQLITE_ERROR]。 可以通过用如下参数替换常量变量来重写该查询。

@Query("SELECT * FROM Association WHERE memberStatus = :statusApproved")
LiveData<List<Association>> loadUserAssociations(String statusApproved);

我想知道 Room 是否支持这种字符串连接或字符串格式? (或)我可能遗漏了什么吗?

最佳答案

对于遇到相同问题的人,以下可能是 Kotlin 中的解决方案:

@Query("SELECT * FROM Association WHERE memberStatus = :statusApproved")
loadUserAssociations(statusApproved: String = Association.MEMBER_STATUS_APPROVED): LiveData<List<Association>>

而且我认为它比硬编码或将明显的常量传递给函数更简洁。

关于android - 是否可以在 android Room Query 中使用 StringFormat 或 Constant Variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53386872/

相关文章:

android - 如何验证EditText?

mysql - Rails 3,预加载模型

database - 优化数据库 - 修复

android - 使用 Datagrip 浏览 Android SQLite

android - 如何在 Room Dao 中创建 insertOrThrow 方法?

java - 把安卓手机变成 handle ,通过wifi连接电脑

android - 已发布的具有唯一名称的 android 应用程序未显示在 playstore 搜索中

java - android 位图和 opencv mat - 相同的代码不同的结果

database - GO 打开本地 postgres 连接

sql - 简化UNION查询以使用单个SELECT