0
В приведенном ниже примере показано, как обновить один столбец PRICE, первый выбор строки, а затем обновить его:Обновление более одного столбца в Slick 3.x
val q = for { c <- coffees if c.name === "Espresso" } yield c.price
val updateAction = q.update(10.49)
// Get the statement without having to specify an updated value:
val sql = q.updateStatement
// compiles to SQL:
// update "COFFEES" set "PRICE" = ? where "COFFEES"."COF_NAME" = 'Espresso'
Но что если мне нужно обновить три столбца? возможно ли с этим подходом?
UPDATE
Эти классы баз данных
class OlapDB(tag: Tag) extends Table[Olap](tag, "olap_queries") {
def sk = column[Int]("sk", O.PrimaryKey, O.AutoInc)
def name = column[String]("name")
def descrip = column[Option[String]]("descrip")
def notes = column[Option[String]]("notes")
def mdx = column[String]("mdx")
def folderSk = column[Int]("folder_sk")
def lastUpdateUser = column[Option[String]]("last_upd_user")
def lastUpdateTS = column[Option[LocalDateTime]]("last_upd_ts")(localDateTimeColumnType)
def version = column[Int]("version")
def * = (sk, name, descrip, notes, mdx, folderSk, lastUpdateUser, lastUpdateTS, version)
<> ((Olap.apply _).tupled, Olap.unapply)
}
case class Olap (sk: Int,
name: String,
descrip: Option[String],
notes: Option[String],
mdx: String,
folderSk: Int,
lastUpdateUser: Option[String],
lastUpdateTS: Option[LocalDateTime],
version: Int)
Я получаю следующие ошибки, когда я попробуйте использовать опцию 'map':' ◾Не найдено соответствия Shape. Слик не знает, как сопоставить данные типы. Возможные причины: T в таблице [T] не соответствует вашей проекции *. Или вы используете неподдерживаемый тип в запросе (например, scala List). Требуемый уровень: slick.lifted.FlatShapeLevel Тип источника: (slick.lifted.Rep [String], slick.lifted.Rep [Option [String]], slick.lifted.Rep [Option [java.time.LocalDateTime]]) Распакованный тип: T Упакованный тип: G' – ps0604
вторая ошибка: '◾ недостаточно аргументов для карты метода: (неявная форма: slick.lifted.Shape [_ <: slick.lifted.FlatShapeLevel, (slick.lifted.Rep [String], slick.lifted.Rep [Option [String]], slick.lifted.Rep [Option [java.time.LocalDateTime]]), T, G]) slick.lifted.Query [G, T, Seq]. Необработанная форма параметра значения. * Проекция прекрасна, поскольку класс базы данных компилируется без ошибок. – ps0604
. Вы не указали определение своей таблицы в вопросе, поэтому я предположил, что вы используете его из документов Slick. Поскольку у вас есть другое определение таблицы, вы должны отредактировать свой вопрос и указать его. –