我正在尝试使用 Squeryl 为数据库编写一个快速数据浏览器,但我很难以通用方式遍历所有表。基于 Squeryl SchoolDb 示例,我尝试了以下操作:
def browseTable(name: String) = {
SchoolDb.tables.find(_.name == name) map { t=>
val fields = t.posoMetaData.fieldsMetaData
val rows = from (t) (s => select(s))
// Print the columns
println(fields.map(_.columnName).mkString("\t"))
rows map { row =>
println(fields.map(f => f.get(row)).mkstring("\t"))
}
}
编译器对这种尝试不太满意(缺少“行”的类型类型),我可以理解它的困境。将参数显式声明为 Any 只会将编译错误更改为“f.get(row)”上的“No implicit view available from Any => org.squeryl.dsl.ast.TypedExpressionNode[_]”
如何解决此问题或更改模型(可能添加某种特征)以启用对所有表中所有数据的通用访问?