私はテーブルにautoincフラグを持たずに要素をdatabseに簡単に挿入しようとしています。ここでSlick 3.1.1 AutoIncなしのデータベースへの要素の挿入
テーブル定義ですが、私は定義されている適切なマッパーのすべてを持っている:
class BlockHeaderTable(tag: Tag) extends Table[BlockHeader](tag,"block_headers") {
def hash = column[DoubleSha256Digest]("hash", O.PrimaryKey)
def version = column[UInt32]("version")
def previousBlockHash = column[DoubleSha256Digest]("previous_block_hash")
def merkleRootHash = column[DoubleSha256Digest]("merkle_root_hash")
def time = column[UInt32]("time")
def nBits = column[UInt32]("n_bits")
def nonce = column[UInt32]("nonce")
def * = (hash, version, previousBlockHash, merkleRootHash, time, nBits, nonce).<>[BlockHeader,
(DoubleSha256Digest, UInt32, DoubleSha256Digest, DoubleSha256Digest, UInt32, UInt32, UInt32)](blockHeaderApply,blockHeaderUnapply)
}
私はこのテーブルのためのシンプルなinsert関数を作成しようとしています。ここに私の試みは次のとおりです。
override val table = TableQuery[BlockHeaderTable]
def create(blockHeader: BlockHeader): Future[BlockHeader] = {
val insertAction = table += blockHeader
database.run(insertAction)
}
と私はタイプのため、このエラーを取得しています:
[email protected]:~/dev/bitcoins-spv-node$ sbt compile
[info] Loading project definition from /home/chris/dev/bitcoins-spv-node/project
[info] Set current project to bitcoins-spv-node (in build file:/home/chris/dev/bitcoins-spv-node/)
[info] Compiling 1 Scala source to /home/chris/dev/bitcoins-spv-node/target/scala-2.11/classes...
[error] /home/chris/dev/bitcoins-spv-node/src/main/scala/org/bitcoins/spvnode/models/BlockHeaderDAO.scala:30: type mismatch;
[error] found : slick.profile.FixedSqlAction[Boolean,slick.dbio.NoStream,slick.dbio.Effect.Write]
[error] required: slick.dbio.DBIOAction[org.bitcoins.core.protocol.blockchain.BlockHeader,slick.dbio.NoStream,Nothing]
[error] database.run(insertAction)
[error] ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
[error] Total time: 3 s, completed Sep 8, 2016 2:11:32 PM
をinsertActionをどこで定義していますか? 'DBIOAction'から継承していないようですね? –
'table'は単なる' TableQuery'オブジェクトで、 'blockHeader'は' table'が格納するオブジェクトのインスタンスです。 '+ ='は 'SimpleInsertActionComposer'の内部で定義されています –
私は、insert文が' DBIO.seq'の外で使用できるかどうかが重要だと思います。 github.com/slick/slick/blob/898cb1871c610cea72027b266494f5bd83f770c9/slick-testkit/src/main/scala/com/typesafe/slick/testkit/tests/InsertTest.scala –