gpt4 book ai didi

sql - 即使解析器被标记为可选, Play Scala Anorm 解析器也会抛出 UnexpectedNullableFound

转载 作者:行者123 更新时间:2023-12-04 14:04:47 24 4
gpt4 key购买 nike

该表定义如下:

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 数据库。

最佳答案

问题是str("something") ?意味着从不可为空的列“某物”中获取,但我不确定是否会有一行。我想你想要的是:

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

原样的 SQL 语句给了我们一个 Option[Option[String]] ,因为我们不确定该行是否存在,如果该行存在,我们不确定该列是否为空。这就是为什么我们需要做一个 getOrElse 来将它减少到 Option[String]

关于sql - 即使解析器被标记为可选, Play Scala Anorm 解析器也会抛出 UnexpectedNullableFound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9244900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com