私は Hibernate (3.3.x) を使用しており、次の 2 つのエンティティがあります。
public class FtChargeAcctPkgDtl {
private FtChargeAcctPkgDtlId id;
private Set<FtChargeAcctPkgRate> ftChargeAcctPkgRates;
}
と
public class FtChargeAcctPkgRate {
private FtChargeAcctPkgRateId id;
}
(簡単にするために、他の属性とセッターは省略しています)。
私はネイティブクエリを持っています:
<sql-query name="readSymbolsFtPackages">
<return alias="pkgDtl" class="somepackage.FtChargeAcctPkgDtl"/>
<return-join alias="pkgRate" property="pkgDtl.ftChargeAcctPkgRates"/>
<![CDATA[
SELECT {pkgDtl.*}, {pkgRate.*}
FROM ft_charge_acct_pkg_dtl pkgDtl
JOIN ft_charge_acct_pkg_rate pkgRate
ON pkgRate.master_seq_no = pkgDtl.master_seq_no -- just primary key
AND pkgRate.pkg_id = pkgDtl.pkg_id
]]>
</sql-query>
クエリは、FtChargeAcctPkgDtl#ftChargeAcctPkgRates が入力された状態で、pkgDtl のすべてのアイテムに対して 1 つの行を返すと想定されています (私はそれを望んでいます)。
メイン (pkgDtl) テーブルに 5 つの行があり、結合されたテーブルに 50 行あるとします (単一の pkgDtl に対して平均 10 pkgRates)。を使用してクエリを呼び出すと、
Query query = session.getNamedQuery("readSymbolsFtPackages");
query.list();
私は50行を取得します。ただし、そのうちの 45 は重複しています。これらの 5 つの pkgDtls と、それぞれに pkgRates が入力されたものを取得したいと考えています。休止状態でこれを行う方法はありますか?