我正在构建一个Android应用程序,显示用户可能匹配的列表.用户可以单击一个以喜欢该用户,并在本地保存所有这些喜欢.
我可以编写一个查询来获取匹配列表,如下所示:
@Query("SELECT * FROM match WHERE liked = :liked ORDER BY match DESC LIMIT :limit")
fun getMatches(limit: Int = 6, liked: Boolean = true): Flowable<List<Match>>
Run Code Online (Sandbox Code Playgroud)
我已经知道这很好用.但是,我没有预见到任何我会设置liked为false的情况,所以我很好奇是否有办法硬编码我的布尔条件?如果我尝试:
@Query("SELECT * FROM match WHERE liked = true ORDER BY match DESC LIMIT :limit")
Run Code Online (Sandbox Code Playgroud)
我在编译时遇到以下错误:
Error:(8, 0) Gradle: error: There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (no such column: true)
Run Code Online (Sandbox Code Playgroud)
如何在查询字符串中对此布尔值进行硬编码?
我也尝试过:
@Query("SELECT * FROM match WHERE liked = 'true' ORDER BY match DESC …我有2个实体,硬币和CoinRevenue.
基本上,硬币以其他货币持有美元价格.
例如,带符号EUR的硬币,值为1.0356
@Entity(tableName = "coin")
data class Coin(
@field:PrimaryKey(autoGenerate = false)
var id: String = "",
var symbol: String = "",
var pricInUsd: Float = 0f)
Run Code Online (Sandbox Code Playgroud)
CoinRevenue是一个实体,我用它来保存用户拥有的特定硬币的硬币数量.例如,CoinRevenue与Coin Entity有关,EUR符号和金额为1000.
@Entity(tableName = "coinRevenue")
data class CoinRevenueNew(
@field:PrimaryKey(autoGenerate = true)
var id: Int = 0,
var coin: Coin? = null,
var amount: Float = 0f)
Run Code Online (Sandbox Code Playgroud)
现在我想从数据库中获取CoinRevenue并从数据库中获取更新的Coin.
例如,我用硬币保存了硬币(EUR,1.0253),而不是使用该硬币保存了CoinRevenue.
之后我用(EUR,2.522)更新了Coin我希望CoinRevenue中的Coin对象也会更新.
我知道@Embedded只是将内部objet字段作为列添加到同一个父对象.当我使用关系时,我必须使用List或Set.但我在CoinRevenue里总是有1枚硬币.
我的硬币DA:
@Query("select * from coin order by rank")
fun getAllCoins(): Flowable<List<CoinDB>>
@Query("select * from coin where rank = 1")
fun getFirstCoin(): Maybe<CoinDB>
@Query("select …Run Code Online (Sandbox Code Playgroud)