私は現時点でSQLをやっていて、私が作成した問題について助けてくれるでしょう。Hibernate Query - Complex
私はIOUアプリケーションを作っているいくつかのプログラミングを練習する。以下は、 私のIOUレコード(いくつかの関連する列を無視して)を格納しているテーブルです。この表は、ユーザーが「ねえ、あなたは私にXの金額を借りている」とか「あなたにXの金額を借りている」と言うことができます。
| Creator | Type | User_Involved| Amount |
|:-----------|------------:|:------------:|
| 1 | 0 | 2 | 3.0
| 2 | 0 | 1 | 4.0
| 3 | 1 | 1 | 5.0
注:タイプは、ユーザーが「貸し借りしたか、請求したか」を表します。 0 =貸し手 1 =リクエスト
ゴール:私の目標は、すべてのユーザーのリストと総負担額(負または正)を取得することです。
グループ化する必要がある2つの列(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
メモリにすべてのIOUのをロードし、そのように並べ替えのほかに、私は完全に困惑。私は今日多くの研究を行い、多くのことを学んだが、まだ進展していない。
ご協力いただければ幸いです。
Fyi JPAでは、エンティティマネージャを使用してネイティブSQLクエリを呼び出すことができます。 – Mordechai