1

テーブル定義があります

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]

違いはありませんでした。

4

1 に答える 1

0

宣言を削除すると

t.id is unique

できます。したがって、問題は解決されます。

これはsquerylのバグですか?

于 2012-07-30T15:45:56.500 に答える