Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Scala Slick/ScalaQuery BigDecimal创建十进制(10,0)如何允许小数?_Database_Scala_Playframework 2.0_Scalaquery_Slick - Fatal编程技术网

Database Scala Slick/ScalaQuery BigDecimal创建十进制(10,0)如何允许小数?

Database Scala Slick/ScalaQuery BigDecimal创建十进制(10,0)如何允许小数?,database,scala,playframework-2.0,scalaquery,slick,Database,Scala,Playframework 2.0,Scalaquery,Slick,我如何告诉Slick创建允许小数的十进制SQL类型? 似乎默认情况下,Slick不允许使用我在下面代码中注意到的小数。它在MySQL中创建一个数据类型为decimal(10,0)的列 我的Scala代码中有以下模型: import scala.slick.driver.MySQLDriver.simple._ case class TimeType(id: Option[Int], name: String, employeeMultiplier: BigDecimal, employer

我如何告诉Slick创建允许小数的十进制SQL类型?
似乎默认情况下,Slick不允许使用我在下面代码中注意到的小数。它在MySQL中创建一个数据类型为
decimal(10,0)
的列

我的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 _)
}

这并不理想,但您可以尝试以下方法:

def employeeMultiplier = 
  column[BigDecimal]("employeeMultiplier", O.DBType("decimal(10, 4)"))
MySQL只接受DECIMAL,在这种情况下,它使用默认值创建字段
正好是十进制(10,0)。我不确定是否有任何其他方法可以告诉Slick/ScalaQuery您希望为您的领域提供某些选项

似乎对于Slick 3+用户应该使用
O.SqlType
而不是
O.DBType
def employeeMultiplier = 
  column[BigDecimal]("employeeMultiplier", O.DBType("decimal(10, 4)"))