scala – 从表中访问数据库列名?
假设我有
a table:
object Suppliers extends Table[(Int,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 } 表的数据库名称 可以通过以下方式访问表的数据库名称:Suppliers.tableName 例如,上表的数据库名称是“SUPPLIERS”. 列的数据库名称 通过AbstractTable,getLinearizedNodes和索引看起来很有希望.但是在字符串表示中没有列名. 我假设*表示“all the columns I’m usually interested in.” *是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中的所有内容进行强力检查,以便可能在String中查找列名. 有没有人之前也遇到过这个问题,或者有人能让我更好地了解MappedProjection的工作原理吗? 解决方法
它需要您依赖Slick内部,这可能会在版本之间发生变化,但这是可能的.以下是Slick 1.0.1的工作原理:您必须通过FieldSymbol.然后,您可以提取所需的信息,如
columnInfo(driver: JdbcDriver,column: FieldSymbol): ColumnInfo 的工作方式.
要从列中获取FieldSymbol,可以使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |