首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复Kotlin中的“原因: java.lang.IllegalStateException:在‘only’中找不到元素”

如何修复Kotlin中的“原因: java.lang.IllegalStateException:在‘only’中找不到元素”
EN

Stack Overflow用户
提问于 2019-08-05 17:44:48
回答 1查看 458关注 0票数 0

我想从Kotlin中的DB中选择一个值,但得到"Caused by: java.lang.IllegalStateException: No element found in 'only'“错误。

我已经编写了一个类,并且使用了map作为RowMapper

代码语言:javascript
复制
class MarketplaceGetEffectiveRateQuery(private val handle: Handle) {


    fun run(resourceUUID: UUID,subscriptionUuid: UUID): BigDecimal {
       return handle.createQuery(GET_EFFECTIVE_RATE_QUERY)
            .bind("resourceUUID", resourceUUID)
                .bind("ms_subscription_id", subscriptionUuid)
            .map(EffectiveRateMapper())
                .findOnly()
    }
}
代码语言:javascript
复制
   override fun map(rs: ResultSet, ctx: StatementContext): BigDecimal {
       return rs.getBigDecimal("effective_rate")
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-08-05 18:03:55

我假设您使用的是JDBI。如果是这样,那么这是绝对正确的行为。

代码语言:javascript
复制
public interface ResultIterable<T> extends Iterable<T> { 

     /**
     * Get the only row in the result set.
     * @throws IllegalStateException if zero or multiple rows are returned
     * @return the object mapped from the singular row in the results
     */
    default T findOnly() { ... }
}

注意:如果返回零个或多个IllegalStateException行,则@引发

因此,只有当您绝对确定查询始终生成单个结果时,才应使用findOnly()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57355994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档