我正在使用 Hibernate (3.3.x),并且有两个实体:
public class FtChargeAcctPkgDtl {
private FtChargeAcctPkgDtlId id;
private Set<FtChargeAcctPkgRate> ftChargeAcctPkgRates;
}
and
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>
该查询应该(我希望它)为 pkgDtl 中的每个项目返回一行,并填写 FtChargeAcctPkgDtl#ftChargeAcctPkgRates。但实际上它为 ft_charge_acct_pkg_rate 中的每个项目返回一行。
假设主 (pkgDtl) 表中有 5 行,连接表中有 50 行(单个 pkgDtl 平均有 10 个 pkgRates)。当我使用调用查询时
Query query = session.getNamedQuery("readSymbolsFtPackages");
query.list();
我得到 50 行。然而其中 45 个是重复的。我想要获得这 5 个 pkgDtl,并且每个 pkgDtl 都填写了 pkdRates。有没有办法在休眠状态下做到这一点?
Use:
Query query = session.getNamedQuery("readSymbolsFtPackages");
query.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
query.list();
Regards
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)