0

scalikejdbc を使用して、配列フィールドを含むスキーマにアクセスしようとしています。

CREATE TABLE foo (
  id         INTEGER      PRIMARY KEY,
  events     TEXT[]       NOT NULL
);

ドキュメントや例で配列について何も見つけることができません。scalikejdbc のソースを見て推測することしかできません。

私のモデルは次のようになります

case class Foo(id: Long, events: Array[String])

object Foo extends SQLSyntaxSupport[Foo] with ShortenedNames {
  override val columnNames = Seq("id", "events")
  private val s = syntax("s")

  private def apply(sp: SyntaxProvider[Foo])(rs: WrappedResultSet): Foo = apply(sp.resultName)(rs)

  private def apply(rn: ResultName[Foo])(rs: WrappedResultSet): Foo = Foo(
    id          = rs.get(rn.id),
    events      = rs.get(rn.events)
  )

  // ...
}

そしてコンパイラは不平を言う

erroneous or inaccessible type events      = rs.get(rn.events)
                                                   ^

抽出コードを次のように変更すると

events      = rs.array(rn.events).getArray.asInstanceOf[Array[String]]

正常にコンパイルされますが、実行時例外が発生します

Execution exception[[UnsupportedOperationException: null]]

では、scalikejdbc を使用して配列フィールドにアクセスするにはどうすればよいでしょうか。

4

2 に答える 2

1

結果をキャストする必要があることがわかりましたBuffer

events      = rs.any(rn.events).asInstanceOf[Buffer[String]]
于 2014-08-26T07:59:52.697 に答える