11

小数を許可する Decimal SQL 型を作成するように Slick に指示するにはどうすればよいですか?
デフォルトでは、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
    ...
4

1 に答える 1

10

理想的ではありませんが、これを試すことができます:

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

MySQL は のみを受け入れます。DECIMALその場合、たまたま であるデフォルトでフィールドを作成しますDECIMAL(10, 0)。フィールドに特定のオプションが必要であることを Slick/ScalaQuery に伝える他の方法があるかどうかはわかりません。

于 2013-01-15T14:39:28.103 に答える