Kotlin中具有自定义类型的JOOQ SUM

问题描述 投票:1回答:2

当前,我有一个转换器,可以使用Kotlin在JOOQ中使用值对象。

[我的数据库有一个名为transactions的表,其字段类型为decimal(10, 2)称为billing _amount,在我的Kotlin代码中,我有一个简单的ValueObject来自DDD进行包装,称为BillingAmount,定义如下]]

data class BillingAmount(val value: BigDecimal)

至于我的jooq自定义转换器,我有以下代码:

public final TableField<TransactionsRecord, BillingAmount> BILLING_AMOUNT =
        createField(
                DSL.name("billing_amount"),
                org.jooq.impl.SQLDataType.NUMERIC(10, 2).nullable(false),
                this,
                "",
                org.jooq.Converter.ofNullable(
                    java.math.BigDecimal.class,
                    okano.dev.jooqtesting.BillingAmount.class,
                    t -> new okano.dev.jooqtesting.BillingAmount(t),
                    u -> u.getValue()
                )
        );

[在我的存储库中,我只是想检索账单金额的总和,但是jooq抱怨BillingAmount不会扩展Number类。我知道这是一种Java通用验证,它阻止了我的代码正常工作,但是除了扩展Number类以外,还有什么办法可以解决此问题?我认为转换器应该足够,但是可以肯定的是我错了。

这是我要实现的简单查询:

// jooq is an instance of DSLContext
return jooq.select(sum(TABLE.BILLING_AMOUNT))
            .from(TABLE)
            .fetchSingle()

对此问题有何想法?预先感谢。

当前,我有一个转换器,可以使用Kotlin在JOOQ中使用值对象。我的数据库中有一个名为transactions的表,其字段类型为十进制(10,2),称为billing _amount,在我的Kotlin代码上...

java sql kotlin aggregation jooq
2个回答
0
投票

作为解决方法,您总是可以在jOOQ中使用plain SQL templating


0
投票

我假设您遇到的问题仅是由于Java的类型系统造成的。

© www.soinside.com 2019 - 2024. All rights reserved.