2013-01-15 5 views
11

मैं एक दशमलव एसक्यूएल प्रकार बनाने के लिए स्लिम कैसे कहूं जो decimals के लिए अनुमति देता है?
ऐसा लगता है कि डिफ़ॉल्ट रूप से Slick decimals के लिए अनुमति नहीं देता है जिसे मैंने नीचे दिए गए कोड के साथ देखा है। यह MySQL में डेटा प्रकार decimal(10,0) के साथ एक कॉलम बनाता है।स्कैला स्लिक/ScalaQuery BigDecimal दशमलव बनाता है (10,0) decimals कैसे अनुमति दें?

मेरे पास मेरी स्काला कोड में निम्नलिखित मॉडल:

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

स्टार्टअप के दौरान मैं स्लिक का उपयोग कर इस तालिका बनाने के जब तक यह पहले से ही इस कोड

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

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

उत्तर

10

यह आदर्श नहीं है के साथ मौजूद है, लेकिन आप कर सकते थे इस प्रयास करें:

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

MySQL सिर्फ DECIMAL स्वीकार करता है, इस मामले में यह फ़ील्ड को इसके डिफ़ॉल्ट के साथ बनाता है जो DECIMAL(10, 0) होने लगता है। मुझे यकीन नहीं है कि Slick/ScalaQuery को बताने का कोई अन्य तरीका है कि आप अपने फ़ील्ड के लिए कुछ विकल्प चाहते हैं।

+0

ग्रेट, खूबसूरती से धन्यवाद। – Farmor

+1

लगता है कि Slick 3+ के साथ 'O.DBType' के बजाय' O.SqlType' का उपयोग करना चाहिए। – michaJlS

संबंधित मुद्दे