0

我在一个项目中使用暴露,我有一个表,让我们TableX用两个属性 调用它,property1并且x知道它x是可空的,我添加TableX.x.isNotNull()到我的查询中,所以我可以忽略空行!

而且我Object1还有两个属性TableXproperty1并且x知道x在 Object1 中不为空

然后,当我从查询的行中创建 Object1 时,编译器会喋喋不休,x因为它不应该为空,并且我们从 TableX 接收到一个可为空的 x。

所以我在 Object1 中!!设置时添加x了,因为我确信x is null由于我添加的约束,查询永远不会返回任何行。

但是,我仍然收到KotlinNullPointerException了一些时间。那么这怎么可能呢?

我想到了MySQLand之间的一些兼容性问题exposed!但找不到任何

   val result = listOf<Object1>()

   transaction {
        val query = TableX.select {
            TableX.property1.eq(123) and
            TableX.x.isNotNull()
        }
            .fetchSize(1000)

        result = query.map {
            Object1(
                property1 = it[TableX.property1],
                x = it[TableX.x]!!
            )
        }
    }
4

1 回答 1

0

我现在工作的公司也面临同样的问题。看起来你有比赛条件。null在构建结果列表之前尝试明确检查。至少你不会得到例外。

于 2019-12-12T18:11:34.357 回答