我目前正在尝试从JOOQ查询生成器和PostgreSQL中的此查询中检索单个double值作为数据库,前提是DRINKS.PRICE的类型为double,ORDER_DRINK.QTY的类型为整数。
Record rec = create.select(DSL.sum(DRINKS.PRICE.multiply(ORDER_DRINK.QTY)).as("am_due")).from(ORDERS
.join(ORDER_DRINK
.join(DRINKS)
.on(DRINKS.DRINK_KEY.equal(ORDER_DRINK.DRINK_KEY)))
.on(ORDERS.ORDKEY.equal(ORDER_DRINK.ORDER_KEY)))
.where(ORDERS.TOKEN.eq(userToken))
.fetchOne();
正如我从(简要)教程中所理解的那样,一旦我从该别名记录中检索了值,其形式为:
double v = rec.getValue("am_due");
我应该将所有价格的总和乘以它们的数量。 不过,我得到的是NullPointerException。
非常欢迎任何帮助。 谢谢。
答案 0 :(得分:1)
您的jOOQ用法是正确的,但我怀疑您的总和只是null
,因为:
null
由于您将Double
拆箱到double
,因此您获得了NullPointerException。你可以解决这个问题
Double v1 = rec.getValue("am_due"); // will return null
double v2 = rec.getValue("am_due", double.class); // will return 0.0
Record rec = create.select(DSL.nvl(
DSL.sum(
DRINKS.PRICE.multiply(ORDER_DRINK.QTY)
), 0.0
).as("am_due"))