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

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

但是,在构建时,空间给了我[SQLITE_ERROR]。
可以通过使用如下所示的参数替换常量变量来重写该查询。
@Query("SELECT * FROM Association WHERE memberStatus = :statusApproved")
LiveData<List<Association>> loadUserAssociations(String statusApproved);

我想知道Room支持这种字符串连接或String Format吗? (或)我可能会缺少一些东西吗?

最佳答案

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

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

而且我认为这比硬编码或将明显的常量传递给函数更干净的方法。

10-03 00:54