有一种简单的方法吗?我迷失了,在源头试图找到一些可以做到这一点的代码。
答案 0 :(得分:3)
Slick的表组件提供了额外的列选项。这可以通过对象O进行访问。
因此,要获得为列指定的默认值,您可以执行以下操作:
def mycolumn = column[String](
"MYCOLUMNNAME",
O.DBType("VARCHAR"),
O.Default("Let's eat icecream"))
答案 1 :(得分:1)
是的,有。
给出一个表
object Users extends Table[(Int, String)]("users") {
def id = column[Int]("id")
def name = column[String]("name")
}
您可以像这样获取id列的默认值:
val driver: BasicProfile = scala.slick.driver.H2Driver //use the one appropriate to you
val defaultValue: Int = Users.id.typeMapper(driver).zero
引用文档:
zero
上的TypeMapperDelegate
方法给出了“类型的零值”。我没有测试这是否会在您定义表时返回为列设置的默认值,或者只返回特定于该类型的常规零值,而不是表。
答案 2 :(得分:0)
可以按以下方式提取默认值:
import slick.jdbc.SQLServerProfile.api._
import slick.relational.RelationalProfile
def getDefaultValue(fieldName: String, table: Table[_]) = {
table.create_*.toSeq.find(_.name == fieldName)
.flatMap(_.options.collectFirst {
case RelationalProfile.ColumnOption.Default(defaultValue) =>
defaultValue }).orNull
}