slickのinsertOrUpdateは、upsert(primary keyのカラムの値を比較し、レコードがすでに存在するならinsert、存在しないならupdateする)を可能にする便利な機能です。
このupdateがうまく動かずハマってしまいましたが、わかってしまえばすごく単純でした。
コード上のスキーマ定義ではO.PrimaryKey
を指定していたのですが…
class Coffees(tag: Tag) extends Table[(String, Int, Double, Int, Int)](tag, "COFFEES") {
def name = column[String]("COF_NAME", O.PrimaryKey)
def supID = column[Int]("SUP_ID")
def price = column[Double]("PRICE")
def sales = column[Int]("SALES", O.Default(0))
def total = column[Int]("TOTAL", O.Default(0))
def * = (name, supID, price, sales, total)
}
凡ミスで、実際のMySQLのテーブルではprimary key指定を忘れていました。。。
コードで書いているだけでは正常に動かないみたいですね。
slickから実際のMySQLのスキーマもで確認する処理が走っているようですね