Hibernate查询 - 复杂

时间:2016-12-27 13:59:30

标签: java sql spring hibernate jpa

我现在正在涉猎SQL,并希望能够帮助解决我所创造的问题。

要练习一些编程我正在制作一个IOU应用程序。下面是我存储的表格 我的IOU记录(忽略一些相关的列)。这个表允许用户说'嘿,你欠我X金额"和#34;我欠你X金额"。

| Creator    |    Type     | User_Involved| Amount |
|:-----------|------------:|:------------:|   
| 1          |    0        |     2        |   3.0
| 2          |    0        |     1        |   4.0
| 3          |    1        |     1        |   5.0

注意:类型表示用户是否已借出或要求提供资金"。       0 =借出       1 =请求

目标:我的目标是获取所有用户及其总欠款金额(负数或正数)的列表。

这已经变得非常困难,因为我不能做一个简单的小组,因为我需要分组两个列(Creator和User_Involved)。

我设法写了一个SQL查询,给出了正确的结果,但是我无法将其翻译成Hibernate版本。

问题主要归咎于JPA无法执行工会。

有问题的查询:

/** assumption 1 is owed to creator **/

select sum(owed_to_you) as owed_to_you, friend_id
from
(
/** you created **/
select sum(CASE WHEN transaction_type = 0 THEN -amount ELSE amount END) as owed_to_you, friend_involved as friend_id
from iou
where
  creator = 3

group by friend_involved

union all

/** someone else created **/
select sum(CASE WHEN transaction_type = 1 THEN -amount ELSE amount END) as owed_to_you, creator as friend_id
from iou
where
  friend_involved = 3

group by creator) as theunion

group by friend_id

除了将所有Ious加载到内存中并以这种方式对其进行排序外,我完全难过了。我今天做了很多研究并学到了很多东西,但是,我还没有取得进展。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以单独执行这两个查询,并将结果合并为Java代码。