@Query 中对象的可访问性
Accessibility of an object in a @Query
我想用 Room
做这样的事情:
@Query("UPDATE wallet SET value = quantity + :w.quantity WHERE value = :w.value")
fun addMoney(w: Wallet)
我的对象Wallet
是这样的:
@Entity
data class Wallet(
@PrimaryKey()
var value: Int,
var currency: String,
var quantity: Int
)
这就是我想要使用它的方式:
db.walletDao().addMoney(Wallet(5, "USD", 5))
但似乎无法像这样访问查询中的对象::w.quantity
我有一个漂亮的错误:
Error:(24, 2) error: mismatched input '.' expecting {<EOF>, ';', ',', '=', '*', '+', '-', '||', '/', '%', '<<', '>>', '&', '|', '<', '<=', '>', '>=', '==', '!=', '<>', K_ALTER, K_ANALYZE, K_AND, K_ATTACH, K_BEGIN, K_BETWEEN, K_COLLATE, K_COMMIT, K_CREATE, K_DELETE, K_DETACH, K_DROP, K_END, K_EXPLAIN, K_GLOB, K_IN, K_INSERT, K_IS, K_ISNULL, K_LIKE, K_MATCH, K_NOT, K_NOTNULL, K_OR, K_PRAGMA, K_REGEXP, K_REINDEX, K_RELEASE, K_REPLACE, K_ROLLBACK, K_SAVEPOINT, K_SELECT, K_UPDATE, K_VACUUM, K_VALUES, K_WHERE, K_WITH, UNEXPECTED_CHAR}
public abstract void addMoney(@org.jetbrains.annotations.NotNull()
^
mismatched input '.' expecting {<EOF>, ';', '=', '*', '+', '-', '||', '/', '%', '<<', '>>', '&', '|', '<', '<=', '>', '>=', '==', '!=', '<>', K_ALTER, K_ANALYZE, K_AND, K_ATTACH, K_BEGIN, K_BETWEEN, K_COLLATE, K_COMMIT, K_CREATE, K_DELETE, K_DETACH, K_DROP, K_END, K_EXPLAIN, K_GLOB, K_IN, K_INSERT, K_IS, K_ISNULL, K_LIKE, K_MATCH, K_NOT, K_NOTNULL, K_OR, K_PRAGMA, K_REGEXP, K_REINDEX, K_RELEASE, K_REPLACE, K_ROLLBACK, K_SAVEPOINT, K_SELECT, K_UPDATE, K_VACUUM, K_VALUES, K_WITH, UNEXPECTED_CHAR}
我该怎么办?
Room 目前不支持您想要的。它不支持完整的表达语言,例如数据绑定库使用的语言。我requested that feature,被拒了
我想用 Room
做这样的事情:
@Query("UPDATE wallet SET value = quantity + :w.quantity WHERE value = :w.value")
fun addMoney(w: Wallet)
我的对象Wallet
是这样的:
@Entity
data class Wallet(
@PrimaryKey()
var value: Int,
var currency: String,
var quantity: Int
)
这就是我想要使用它的方式:
db.walletDao().addMoney(Wallet(5, "USD", 5))
但似乎无法像这样访问查询中的对象::w.quantity
我有一个漂亮的错误:
Error:(24, 2) error: mismatched input '.' expecting {<EOF>, ';', ',', '=', '*', '+', '-', '||', '/', '%', '<<', '>>', '&', '|', '<', '<=', '>', '>=', '==', '!=', '<>', K_ALTER, K_ANALYZE, K_AND, K_ATTACH, K_BEGIN, K_BETWEEN, K_COLLATE, K_COMMIT, K_CREATE, K_DELETE, K_DETACH, K_DROP, K_END, K_EXPLAIN, K_GLOB, K_IN, K_INSERT, K_IS, K_ISNULL, K_LIKE, K_MATCH, K_NOT, K_NOTNULL, K_OR, K_PRAGMA, K_REGEXP, K_REINDEX, K_RELEASE, K_REPLACE, K_ROLLBACK, K_SAVEPOINT, K_SELECT, K_UPDATE, K_VACUUM, K_VALUES, K_WHERE, K_WITH, UNEXPECTED_CHAR}
public abstract void addMoney(@org.jetbrains.annotations.NotNull()
^
mismatched input '.' expecting {<EOF>, ';', '=', '*', '+', '-', '||', '/', '%', '<<', '>>', '&', '|', '<', '<=', '>', '>=', '==', '!=', '<>', K_ALTER, K_ANALYZE, K_AND, K_ATTACH, K_BEGIN, K_BETWEEN, K_COLLATE, K_COMMIT, K_CREATE, K_DELETE, K_DETACH, K_DROP, K_END, K_EXPLAIN, K_GLOB, K_IN, K_INSERT, K_IS, K_ISNULL, K_LIKE, K_MATCH, K_NOT, K_NOTNULL, K_OR, K_PRAGMA, K_REGEXP, K_REINDEX, K_RELEASE, K_REPLACE, K_ROLLBACK, K_SAVEPOINT, K_SELECT, K_UPDATE, K_VACUUM, K_VALUES, K_WITH, UNEXPECTED_CHAR}
我该怎么办?
Room 目前不支持您想要的。它不支持完整的表达语言,例如数据绑定库使用的语言。我requested that feature,被拒了