Подтвердить что ты не робот

Scala Slick/ScalaQuery BigDecimal создает десятичную (10,0), как разрешить десятичные знаки?

Как сообщить Slick о создании десятичного типа SQL, который позволяет использовать десятичные знаки?
Кажется, что по умолчанию Slick не позволяет десятичные знаки, которые я заметил с помощью приведенного ниже кода. Он создает столбец с типом данных decimal(10,0) в MySQL.

У меня есть следующая модель в коде Scala:

import scala.slick.driver.MySQLDriver.simple._

case class TimeType(id: Option[Int], name: String,
  employeeMultiplier: BigDecimal, employerMultiplier: BigDecimal)

object TimeTypes extends Table[TimeType]("timeType") {
  def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
  def name = column[String]("name")
  def employeeMultiplier = column[BigDecimal]("employeeMultiplier")
  def employerMultiplier = column[BigDecimal]("employerMultiplier")
  def * = id.? ~ name ~ employeeMultiplier ~ employerMultiplier <> (TimeType, TimeType.unapply _)
}

При запуске я создаю эту таблицу с помощью Slick, если она уже не существует с этим кодом

...
lazy val database = Database.forDataSource(DB.getDataSource())

database.withSession {
  if (MTable.getTables("timeType").list.isEmpty) {
    TimeTypes.ddl.create
    ...
4b9b3361

Ответ 1

Это не идеально, но вы можете попробовать следующее:

def employeeMultiplier = 
  column[BigDecimal]("employeeMultiplier", O.DBType("decimal(10, 4)"))

MySQL принимает только DECIMAL, и в этом случае он создает поле с по умолчанию, которое оказывается DECIMAL(10, 0). Я не уверен, есть ли другой способ сообщить Slick/ScalaQuery, что вы хотите определенные параметры для своих полей.