Squeryl:KeyedEntity.id未在插入时更新

时间:2012-07-29 13:25:59

标签: mysql scala playframework-2.0 squeryl

我有一个表格定义

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(我手动创建)不生成数据库表,但“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]

没有任何差异。

1 个答案:

答案 0 :(得分:0)

当我删除声明时

t.id is unique

它有效。所以问题就解决了。

这是squeryl的错误吗?