Как да изхвърлите всички таблици с помощта на Squeryl

Опитвам се да напиша бърз браузър за данни за база данни, използвайки 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 просто променя грешката при компилиране на „Няма наличен имплицитен изглед от Any => org.squeryl.dsl.ast.TypedExpressionNode[_]“ на „f.get(row)“

Как мога или да поправя този проблем, или да променя моделите (може би добавяйки някаква черта), за да разреша общ достъп до всички данни във всички таблици?


person Abie    schedule 24.08.2013    source източник
comment
Не е свързано с първоначалния ви въпрос, но виждали ли сте вътрешния браузър на h2-база данни? Работи с всеки jdbc адаптер и е доста хубав и малък (според мен). Вижте най-долу тук: h2database.com/html/quickstart.html#h2_console   -  person VasiliNovikov    schedule 24.08.2013


Отговори (1)


Компилаторът се оплаква, защото методът f.get очаква AnyRef параметър. AFAIK, в Scala всичко може безопасно да бъде прехвърлено към AnyRef - компилаторът ще принуди необходимото боксиране, ако е необходимо. Така че мисля, че това трябва да работи: f.get(row.asInstanceOf[AnyRef])

РЕДАКТИРАНЕ: Току-що тествах това и работи.

person ghik    schedule 24.08.2013