这可能是由于我对 Squeryl 的工作原理的误解。我的实体定义为:
case class Wallet(userid: Int, amount: Long)
extends KeyedEntity[Int] with Optimistic {
def id = userid
}
我的表变量定义为:
val walletTable = table[Wallet]("wallets")
on(walletTable) {
w =>
declare {
w.userid is (primaryKey)
}
}
然后我只是调用一个方法来尝试向钱包中添加钱:
val requestedWallet = wallet.copy(amount = wallet.amount + amount)
try {
inTransaction {
walletTable.update(requestedWallet)
}
在我调用更新的那一行,抛出异常: [ClassCastException: java.lang.Integer cannot be cast to org.squeryl.dsl.CompositeKey]
我根本没有使用复合键,所以这很令人困惑。这是否与我的 id 字段不称为“id”而是“userid”这一事实有关?