Scala 使用Slick的泛型查询

Scala 使用Slick的泛型查询,scala,slick,slick-3.0,Scala,Slick,Slick 3.0,我正在开发一个应用程序,它使用一个通用的Slick类根据元数据文件或属性文件中提供的信息(如url、用户、通行证、列计数等)进行查询。因此,我无法硬编码有关我将访问的表的任何信息。因此,我将在Slick中使用大量原始SQL查询,然后使用Slick工具对数据进行过滤和分页 我的问题是: 在Slick文档中提供的示例中: import slick.driver.H2Driver.api._ val db = Database.forConfig("h2mem1") val action = sq

我正在开发一个应用程序,它使用一个通用的Slick类根据元数据文件或属性文件中提供的信息(如url、用户、通行证、列计数等)进行查询。因此,我无法硬编码有关我将访问的表的任何信息。因此,我将在Slick中使用大量原始SQL查询,然后使用Slick工具对数据进行过滤和分页

我的问题是:

在Slick文档中提供的示例中:

import slick.driver.H2Driver.api._

val db = Database.forConfig("h2mem1")

val action = sql"select ID, NAME, AGE from PERSON".as[(Int,String,Int)]
db.run(action)
您可以看到,
action
具有
。作为[(Int,String,Int)]
在它的末尾,我猜测将告诉编译器期望得到什么。这是有道理的。然而,我想做的是需要知道基于非源代码的信息。有没有办法让查询返回的行成为某种列表或数组,我可以使用动态信息(如索引号)访问它们。例如,我愿意接受一个
列表[String]
,以减少这种类型的麻烦


我会继续努力,但作为一个熟练的新手,我想知道是否有比我更有经验的人会想出一个解决方案。

这是一个巨大的“不允许”的问题,因为它与创建Slick的主要原因——类型安全相矛盾。你能提供更多关于你的实际问题的细节吗?您真的是在基于外部获取的文本文件执行查询吗!?
sql
插值器和
as[T]
的参数是静态的。如果您的查询是动态的,您可能最好使用原始jdbc。@DanielShin哈哈,不太好。我正在尝试构建一个应用程序,该应用程序将使用json文件中提供的列信息(类型、大小等)从数据库读取数据。我试图解决的问题是,从历史上看,人们已经将此数据库信息硬编码到应用程序中,因此对数据库的任何更改都将在整个发布周期内实现。这还意味着,为了添加对另一个数据库的支持,您需要等待整个发布周期。我正在尝试构建一个通用的数据库读取器,从json文件中获取它的规范/模式。你有没有这样做过?