gpt4 book ai didi

postgresql - JOOQ 和字段值 : BigDecimal to Int

转载 作者:行者123 更新时间:2023-11-29 13:18:08 25 4
gpt4 key购买 nike

我正在使用带有 numeric 值字段的 postgres。 JOOQ 把它变成 BigDecimal。我的 JOOQ 查询是:

val sumField = DSL.sum(TABLE.VALUE)
val query = dsl().select(TABLE.id.`as`("id"), sumField.`as`("sum"))
.from(TABLE)
.groupBy(TABLE.id)
.fetch()
.map{
record -> SumById(
id = record.get("id").toString(),
sum = record.get("sum").toString().toInt()
)
}

其中 SumById 是具有 idsum 字段的数据类:

data class SumById (val id: String, val sum: Int)

我可以通过 .toString().toInt() 获得 Int 总和。但我想知道是否有更好的方法将 BigDecimal 转换为 Int

附言

我想这更像是一个 kotlin 问题而不是 JOOQ 问题。

最佳答案

是的,有。只需重复使用之前的列引用:

record -> SumById(
id = record.get(TABLE.id.`as`("id")),
sum = record.get(sumField.`as`("sum"))
)

或者,您也可以将它们存储在局部变量中。另一种选择是使用 Record2.value1() Record2.value2()

record -> SumById(
id = record.value1(),
sum = record.value2()
)

...因为类型信息由 jOOQ API 在您的查询中维护(至少达到 22 度)。

在 jOOQ 3.10 中,您还可以使用新的 Kotlin 解构支持,其中 Record2<String, BigDecimal>可以解构如下:

val (id, sum) = record;

关于postgresql - JOOQ 和字段值 : BigDecimal to Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46162376/

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