2016-12-27 5 views
0

私は現時点で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のをロードし、そのように並べ替えのほかに、私は完全に困惑。私は今日多くの研究を行い、多くのことを学んだが、まだ進展していない。

ご協力いただければ幸いです。

+1

Fyi JPAでは、エンティティマネージャを使用してネイティブSQLクエリを呼び出すことができます。 – Mordechai

答えて

1

2つのクエリを別々に実行し、結果をJavaコードで組み合わせることができます。