是否有捷径可寻?我在源代码中迷路了,试图找到一些可以做到这一点的代码。
问问题
1474 次
3 回答
3
Slick 的表格组件提供了额外的列选项。这可以通过对象 O 访问。
因此,要获取为列指定的默认值,您可以执行以下操作:
def mycolumn = column[String](
"MYCOLUMNNAME",
O.DBType("VARCHAR"),
O.Default("Let's eat icecream"))
于 2013-06-12T14:44:12.613 回答
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
引用文档:
- TypeMapper:“TypeMapper 对象表示可用作数据库中的列类型的 Scala 类型”。
- typeMapper(driver) 生成一个TypeMapperDelegate,它是特定于正在使用的驱动程序的类型映射器
- 上的
zero
方法TypeMapperDelegate
给出“类型的零值”。
我没有测试这是否返回您在定义表时为列设置的默认值,或者只是特定于该类型而不是表的一般零值。
于 2013-05-16T09:10:50.520 回答
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
}
于 2020-02-10T14:21:45.883 回答