0

タルベス:

Grandpa
    GP_ID  (PK)
    NAME

Dad
    DAD_ID (PK)
    PG_ID  (FK)

Children
    C_ID   (PK)
    DAD_ID (FK)
    MONEY_AMOUNT
    MONEY_UNIT

クラス (ここでは注釈を省略):

class Grandpa
{
    Long id;
    String name;

    Double moneyAmount; // sum of Children's money amount

    String moneyUnit; // first of Children's money unit.
}

class Dad
{
    Long id;
    Grandpa grandpa;
}

class Children
{
    Long id;
    Dad dad;

    Double moneyAmount;
    String moneyUni;
}

sum(grandpa.dad.children.money_amount) と first(grandpa.dad.children.money_unit) でおじいちゃんオブジェクトを取得する hql を書きたいと思います。ここに私のものがありますが、動作しません:

select gp, sum(chdn.moneyAmount) as gp.moneyAmount, first(chdn.moneyUnit) as gp.moneyUnit
from Grandpa gp, Dad dad, Children chdn
where gp.id =: chdn.dad.grandpa.id
4

1 に答える 1

1
select gp.id, gp.name, sum(chdn.moneyAmount) as moneyAmount, min(chdn.moneyUnit) as gp.moneyUnit
from Children chdn, chdn.dad dad, dad.grandpa gp
groupBy gp.Id

そして、aliastobean トランスフォーマーを使用しておじいちゃん dto に投影します

または、お父さんを含む子コレクションにアクセスし、メモリ内の金額を合計するプロパティとして moneyAmount と unit を実装すると、次のようになります。

select gp from Grandpa gp join fetch gp.children dad join fetch dad.children

ただし、巨大なデカルト積に注意してください

于 2012-09-19T10:00:03.443 に答える