根据“ x不为null的查询”的结果构建对象时,是否仍然有可能在属性“ x”上获取“ NullPointerException”

时间:2019-12-12 14:41:29

标签: kotlin kotlin-exposed

我在一个项目中使用暴露,并且我有一个表可以将其称为具有两个属性的TableX property1x知道x可为空 我在查询中添加了TableX.x.isNotNull(),所以我可以忽略空行!。

我有Object1,还有两个属性,如TableXproperty1x知道x在Object1中不为空

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

因此,在Object1中设置!!时,我已经添加了x,因为我确定由于我添加的约束,查询将永远不会返回任何带有x is null的行。

但是,我仍然收到KotlinNullPointerException。那怎么可能呢?

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

   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]!!
            )
        }
    }

1 个答案:

答案 0 :(得分:0)

在我现在工作的公司中,我面临着同样的问题。看来您已具备比赛条件。尝试在构建结果列表之前显式检查null。至少您不会例外。