可以在android房间查询中使用StringFormat或常量变量吗
我想使用公共常量变量Association.MEMBER\u STATUS\u APPROVED通过以下房间查询查询用户关联列表可以在android房间查询中使用StringFormat或常量变量吗,android,database,android-sqlite,android-room,Android,Database,Android Sqlite,Android Room,我想使用公共常量变量Association.MEMBER\u STATUS\u APPROVED通过以下房间查询查询用户关联列表 @Query("SELECT * FROM Association WHERE memberStatus = " + Association.MEMBER_STATUS_APPROVED) LiveData<List<Association>> loadUserAssociations(); @Query(“从关联中选择*,其中memberS
@Query("SELECT * FROM Association WHERE memberStatus = " + Association.MEMBER_STATUS_APPROVED)
LiveData<List<Association>> loadUserAssociations();
@Query(“从关联中选择*,其中memberStatus=“+Association.MEMBER\u STATUS\u APPROVED”)
LiveData loadUserAssociations();
但是,在构建时,room会给我[SQLITE_ERROR]。
可以通过使用如下参数替换常量变量来重新写入该查询
@Query("SELECT * FROM Association WHERE memberStatus = :statusApproved")
LiveData<List<Association>> loadUserAssociations(String statusApproved);
@Query(“从memberStatus=:statusApproved的关联中选择*)
LiveData loadUserAssociations(字符串状态已批准);
我想知道Room是否支持这种字符串连接或字符串格式?(或者)我可能遗漏了什么吗?- 问题
- 试试这个(用引号括起来)
对于那些有相同问题的人,以下可能是Kotlin的解决方案:
@Query("SELECT * FROM Association WHERE memberStatus = :statusApproved")
loadUserAssociations(statusApproved: String = Association.MEMBER_STATUS_APPROVED): LiveData<List<Association>>
@Query(“从memberStatus=:statusApproved的关联中选择*)
loadUserAssociations(statusApproved:String=Association.MEMBER\u STATUS\u APPROVED):LiveData
我认为这比硬编码或向函数中传递明显的常量更干净。您可以像下面这样查询 而不是
@Query(“从关联中选择*,其中memberStatus=“+Association.MEMBER\u STATUS\u APPROVED”)LiveData loadUserAssociations()代码>
使用
@Query(“从memberStatus=${Association.MEMBER\u STATUS\u APPROVED}的关联中选择*)LiveData loadUserAssociations()
第二个应该可以用。有什么错误吗?是的,@DKV。第二个可以用。但是,我更喜欢第一个,我只想知道Room是否支持这种字符串连接或字符串格式。不,第一个类型不可能。谢谢@JeelVankhede。我认为Room应该支持这样:-D你觉得怎么样?:-)不,实际上不是t房间的错误,但您不能将变量传递给注释
它必须是静态的最终值。我们可以在查询中使用枚举,如下面的“从status=STATES的表中选择*。RUNNING.ordinal()”我们可以在查询中使用枚举,如下面的“从status=STATES的表中选择*。RUNNING.ordinal()“不确定,但我希望您需要一个枚举转换器。因此,您的转换器可能如下所示:[at]TypeConverter fun-toEnum(value:MyEnum?=value?)。让{enumValueOf(it)}[at]TypeConverter fun-fromEnum(value:MyEnum?=value?)。name不确定它是否有效,但请尝试一下。