如何解决如何仅返回 HQL 交叉连接中的第一个对象?
我有以下 HQL
from
com.kable.web.allotment.model.Issue i
inner join fetch i.title
inner join fetch i.title.magazine
inner join fetch i.barcodes bcs,Wholesaler w
LEFT join fetch w.localCurrencies c
inner join fetch w.location
where
w.id = :wholesalerId
and i.title.id = :titleid
and i.distributionStatus = :status
and (
(
i.distributionDate is null
and i.onSaleDate >= TRUNC(CURRENT_DATE)
)
or i.distributionDate >= TRUNC(CURRENT_DATE)
)
and bcs.type.id = w.location.id
and (bcs.localCurrency.id = c.localCurrencyType.id OR c.localCurrencyType.id IS NULL)
and i.onSaleDate BETWEEN COALESCE(c.effectiveDate,i.onSaleDate) and COALESCE(c.expirationDate,i.onSaleDate)
order by
i.distributionDate,i.onSaleDate
我之前编写的所有代码都希望得到 List<Issue>
的回报,但是通过上面的代码,我也得到了批发商及其加入。在我的结果中,我只需要问题、标题、杂志和条形码。我使用的是休眠版本 4.2.18.Final。我如何只返回第一个对象图?我找到了一些关于CROSS JOIN ON的东西,但它只适用于Hibernate 5或更高版本,我无法切换,因为项目相当大,而且依赖Java。
解决方法
您只需要添加一个明确的 SELECT i
子句。
作为旁注,如果它无论如何都不会出现在结果中,则批发商协会的 JOIN FETCH 没有意义
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。