为了账号安全,请及时绑定邮箱和手机立即绑定

复杂选择上的 HSQLDB org.springframework.dao.

复杂选择上的 HSQLDB org.springframework.dao.

交互式爱情 2022-01-06 17:13:11
我有一个在 Oracle 中运行良好的查询,但是org.springframework.dao.TransientDataAccessResourceException当我尝试在 HSQLDB(使用 Oracle 兼容模式)中运行相同的查询时收到一个。这是有问题的查询:select     Orders.id,    (select sum(decode(Orders.status, 'C', Orderlines.qty, 0))      from Orderlines where orderId = Orders.id    ) as "productQuantity"from Ordersjoin Orderlines on Orders.id = Orderlines.orderIdwhere Orders.customerId = ?group by Orders.id, Orders.status这是堆栈跟踪的根Caused by: org.hsqldb.HsqlException: java.lang.NullPointerExceptionat org.hsqldb.error.Error.error(Unknown Source)at org.hsqldb.result.Result.newErrorResult(Unknown Source)at org.hsqldb.result.Result.newErrorResult(Unknown Source)at org.hsqldb.StatementDMQL.execute(Unknown Source)at org.hsqldb.Session.executeCompiledStatement(Unknown Source)at org.hsqldb.Session.execute(Unknown Source)... 60 moreCaused by: java.lang.NullPointerExceptionat org.hsqldb.ExpressionColumn.getValue(Unknown Source)at org.hsqldb.Expression.getValue(Unknown Source)at org.hsqldb.ExpressionOp.getValue(Unknown Source)at org.hsqldb.ExpressionAggregate.updateAggregatingValue(Unknown Source)at org.hsqldb.QuerySpecification.buildResult(Unknown Source)at org.hsqldb.QuerySpecification.getSingleResult(Unknown Source)at org.hsqldb.QuerySpecification.getResult(Unknown Source)at org.hsqldb.StatementQuery.getResult(Unknown Source)... 63 more如果我通过删除decode子句稍微简化查询,HSQLDB 可以处理它。select     Orders.id,    (select sum(Orders.status)      from Orderlines where orderId = Orders.id    ) as "productQuantity"from Ordersjoin Orderlines on Orders.id = Orderlines.orderIdwhere Orders.customerId = ?group by Orders.id, Orders.status这是 HSQLDB 的已知限制吗?任何想法如何解决这个问题?我正在尝试使用 HSQLDB 进行单元测试,因此修改查询并不是一个真正的选择,除非该解决方案也适用于 Oracle。
查看完整描述

1 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

这是 HSQLDB 的一个限制。你可以试试看CASE Order.status WHEN 'C' THEN Orderlines.qty ELSE 0 END它是否有效。


查看完整回答
反对 回复 2022-01-06
  • 1 回答
  • 0 关注
  • 313 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信