我如何 return 只有 HQL 交叉连接中的第一个对象?

How do I return only the first object in an HQL cross join?

我有以下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> 返回,但是使用上面的代码,我也得到了批发商及其连接。在我的结果中,我只需要 Issue、Title、Magazine 和 Barcodes。我正在使用休眠版本 4.2.18.Final。我如何只 return 第一个对象图?我发现了一些关于 CROSS JOIN ON 的东西,但它只适用于 Hibernate 5 或更高版本,我无法切换,因为项目非常大并且 Java 依赖项。

您只需添加一个明确的 SELECT i 子句。

附带说明一下,如果批发商协会的 JOIN FETCH 无论如何都不会出现在结果中,它就没有意义