假设我有一张桌子:
object Suppliers extends Table[(Int, String, String, String)]("SUPPLIERS") {
def id = column[Int]("SUP_ID", O.PrimaryKey)
def name = column[String]("SUP_NAME")
def state = column[String]("STATE")
def zip = column[String]("ZIP")
def * = id ~ name ~ state ~ zip
}
表的数据库名称
可以通过以下方式访问表的数据库名称:AbstractTable 上的 ScaladocSuppliers.tableName
支持这一点。
例如,上表的数据库名称是“SUPPLIERS”。
列的数据库名称
浏览AbstractTable,getLinearizedNodes
看起来indexes
很有希望。但是,它们的字符串表示形式中没有列名。
我假设 * 表示“我通常感兴趣的所有列”。 *
是一个MappedProjection,它有这个签名:
final case class MappedProjection[T, P <: Product](
child: Node,
f: (P) ⇒ T,
g: (T) ⇒ Option[P])(proj: Projection[P])
extends ColumnBase[T] with UnaryNode with Product with Serializable
*.getLinearizedNodes
包含一个巨大的数字序列,我意识到此时我只是在对 API 中的所有内容进行强力检查,以便可能在字符串中找到列名。
以前有没有人遇到过这个问题,或者有人可以让我更好地了解 MappedProjection 的工作原理吗?