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
...
Ответы
Ответ 1
Это не идеально, но вы можете попробовать следующее:
def employeeMultiplier =
column[BigDecimal]("employeeMultiplier", O.DBType("decimal(10, 4)"))
MySQL принимает только DECIMAL
, и в этом случае он создает поле с по умолчанию, которое
оказывается DECIMAL(10, 0)
. Я не уверен, есть ли другой способ сообщить Slick/ScalaQuery, что вы хотите определенные параметры для своих полей.