How do I tell Slick to create a Decimal SQL type which allows for decimals?
It seems that by default Slick doesn't allows for decimals which I noticed with the below code. It creates a column with the data type decimal(10,0)
in MySQL.
I have the following model in my Scala code:
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 _)
}
During startup I create this table using Slick unless it already exists with this code
...
lazy val database = Database.forDataSource(DB.getDataSource())
database.withSession {
if (MTable.getTables("timeType").list.isEmpty) {
TimeTypes.ddl.create
...
It's not ideal, but you could try this:
def employeeMultiplier =
column[BigDecimal]("employeeMultiplier", O.DBType("decimal(10, 4)"))
MySQL accepts just DECIMAL
, in which case it creates the field with it's defaults that
happen to be DECIMAL(10, 0)
. I'm not sure if there's any other way to tell Slick/ScalaQuery that you want certain options for your fields.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With