0
私はスリック3にscalaqueryから移行しようとしているが、コンパイルするときに、次のエラーを取得しています:スカラーからSlick 3.1へ - リストが削除されましたか?
Error:(107, 19) No matching Shape found.
Slick does not know how to map the given types.
Possible causes: T in Table[T] does not match your * projection. Or you use an unsupported type in a Query (e.g. scala List).
Required level: slick.lifted.FlatShapeLevel
Source type: slick.lifted.ProvenShape[TestData]
Unpacked type: T
Packed type: G
(for (test <- testTable)
^
これは変更befor関連するコードです:
case class TestData(id: Int, test_double: Double)
object TestTable extends Table[TestData]("Test_Table") {
var test_value = ""
def id = column[Int]("ID_Test", O.PrimaryKey, O.AutoInc)
def nep_column = column[Double](test_value)
def * = id ~ nep_column <> (TestData, TestData.unapply _)
}
def get_data = {
db withSession {
for (test <- testTable)
yield test.*
}.list
}
と私は変わった後、これがありますそれ:
case class TestData(id: Int, test_double: Double)
class TestTable(tag: Tag) extends Table[TestData](tag, "Test_Table") {
def id = column[Int]("ID_Test", O.PrimaryKey, O.AutoInc)
def nep_column = column[Double](test_value)
def * = (id, nep_column) <> ((TestData.apply _).tupled, TestData.unapply)
}
object testTable extends TableQuery(new TestTable(_)) {
var test_value = ""
}
def get_data = {
Await.result(db.run(
(for (test <- testTable)
yield test.*).result), Duration.Inf)
}
だから、単に.result
で.list
を交換して動作するようには思えません。そして、Slick 3では.list
への参照を見つけることができません。それは削除されましたか?
私はここにどのような問題があり、それを解決する方法を知っていますか?
私はスリックに精通してい3+のみ。あなたは 'yield test。*'は必要ないと思うが、 'yield test'だけだと思う。 –
基本的には、必要なだけ(結合、フィルタなど)選択したクエリを作成し、ビルド時に '.result'を呼び出します。 –