6

テーブルは次のように定義されます。

CREATE TABLE Session (
    id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
    something varchar(32),
    PRIMARY KEY (id)
);

そして、私のクエリは次のようになります。

SQL("SELECT something FROM Session WHERE id={id}").on("id" -> id).as(str("something") ?)

Option[String]これにより、コンパイル時に正しい型 ( ) が得られますがRuntimeException(UnexpectedNullableFound(SESSION.SOMETHING))、実行時に が発生します。

記録のために、私は Play 1.2.4、Play Scala 0.9.1、およびバンドルされている H2 データベースを使用しています。

4

1 に答える 1

9

問題は、str("something") ?null 不可の列「何か」から取得することを意味しますが、行があるかどうかはわかりません。あなたが望むのは次のとおりだと思います:

SQL("SELECT something FROM Session WHERE id={id}").on("id" -> id).as(get[Option[String]]("something") ?).getOrElse(None)

Option[Option[String]]行が存在するかどうかわからず、行が存在する場合、列が null かどうかわからないため、SQL ステートメントをそのまま使用すると、 が返されます。そのため、 getOrElse を実行して、それをOption[String]

于 2012-02-29T08:08:13.657 に答える