2013-01-15 17 views
11

Slick'in ondalıklara izin veren bir Ondalık SQL türü oluşturmasını nasıl söylerim?
Varsayılan olarak Slick, aşağıdaki kodla dikkat ettiğim ondalık sayılara izin vermiyor gibi görünüyor. MySQL'de decimal(10,0) veri tipine sahip bir sütun oluşturur.Scala Slick/ScalaQuery BigDecimal ondalık (10,0) nasıl ondalıklara izin verir?

Ben benim Scala kodunda aşağıdaki modeli: zaten bu kodun İdeal değil

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

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

cevap

10

birlikte var olmadığı sürece Devreye alırken

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

Ben Slick kullanarak bu tablo oluşturmak, ama sen yapabilirsin Bu deneyin:

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

MySQL sadece DECIMAL kabul eder Bu durumda 'un DECIMAL(10, 0) olması varsayılanı ile alanı oluşturur. Slick/ScalaQuery'ye alanlarınız için belirli seçenekler istediğinizi söylemenin başka bir yolu olup olmadığından emin değilim.

+0

Harika, güzelce teşekkürler. – Farmor

+1

Slick 3+ ile birinin "O.DBType" yerine "O.SqlType" kullanması gerektiği gözüküyor. – michaJlS

İlgili konular