首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate查询-复杂

Hibernate查询-复杂
EN

Stack Overflow用户
提问于 2016-12-27 21:59:30
回答 0查看 33关注 0票数 0

我目前正在涉足SQL,希望能为我造成的一个问题提供一些帮助。

为了练习编程,我制作了一个借条应用程序。下面是我存储IOU记录的表格(忽略一些相关列)。这个表允许用户说“嘿,你欠我X金额”和“我欠你X金额”。

代码语言:javascript
运行
复制
| Creator    |    Type     | User_Involved| Amount |
|:-----------|------------:|:------------:|   
| 1          |    0        |     2        |   3.0
| 2          |    0        |     1        |   4.0
| 3          |    1        |     1        |   5.0

注意: Type代表用户是否有“借出或请求的钱”。0=借出1=请求

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

这变得相当困难,因为我不能做简单的group by,因为有两个列需要分组(创建者和User_Involved)。

我设法编写了一个给出正确结果的SQL查询,但是我无法将其转换为Hibernate版本。

这个问题主要归结为JPA无法执行联合。

有问题的查询:

代码语言:javascript
运行
复制
/** 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

除了将所有的借条加载到内存中并以这种方式进行排序之外,我完全被难住了。我今天做了很多研究,学到了很多东西,但是,我仍然没有取得进展。

任何帮助都将不胜感激。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41346562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档