Teo*_*zon 6 sql scala playframework anorm
该表定义如下:
CREATE TABLE Session (
id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
something varchar(32),
PRIMARY KEY (id)
);
Run Code Online (Sandbox Code Playgroud)
我的查询看起来像这样:
SQL("SELECT something FROM Session WHERE id={id}").on("id" -> id).as(str("something") ?)
Run Code Online (Sandbox Code Playgroud)
虽然这Option[String]在编译时提供了正确的type(),但它会RuntimeException(UnexpectedNullableFound(SESSION.SOMETHING))在运行时产生.
为了记录,我正在使用Play 1.2.4,Play Scala 0.9.1和捆绑的H2数据库.
问题是,str("something") ?意味着从不可为空的列"某事"获取,但我不确定是否会有一行.我想你想要的是:
SQL("SELECT something FROM Session WHERE id={id}").on("id" -> id).as(get[Option[String]]("something") ?).getOrElse(None)
Run Code Online (Sandbox Code Playgroud)
SQL语句给我们一个Option[Option[String]],因为我们不确定该行是否存在,如果该行存在,我们不确定该列是否为null.这就是为什么我们需要做一个getOrElse来把它简化为一个Option[String]
| 归档时间: |
|
| 查看次数: |
3512 次 |
| 最近记录: |