1
我有Squeryl:KeyedEntity.id不更新在插入
class Transaction(
val ...
) extends KeyedEntity[Long] {
val id:Long = 0
}
val transaction = table[Transaction]("transactions")
on(transaction) {t =>
declare(
t.id is unique
... (other fields)
)
}
不是由Squeryl生成的数据库表中的表定义(I创建它手动),但“ID”列被设置为PrimaryKey和AutoIncrement。
现在我在此表中插入一行:
val row = new Transaction(...)
val rowResult = transaction.insert(row)
println("Id1="+row.id+"; Id2="+rowResult.id)
该行被正确地插入到数据库中,有一个ID被分配(!= 0)。 但是应用程序在命令行上打印“ID1 = 0; ID2 = 0”。
为什么?我如何获得分配的ID?
编辑: 我也试着表定义这样
class Transaction(
val id: Long,
...
) extends KeyedEntity[Long]
没有做任何的差异。
这不是一个错误。默认情况下,任何数字ID字段都设置为自动递增。当你指定't.id是唯一的'时,你重写了默认行为。没有必要指定它是唯一的,因为它是一个主键,但是如果你想要的话,你必须包含autoincremented属性以及't.id是(unique,autoIncremented)' – 2012-08-16 17:05:40