我需要從數據庫中選擇公司從其活動地址(address.address_status_id = 1)。如果地址不活動,地址欄應包含空值。加入子查詢
下面的查詢不正是我想要的:
select c.id, c.name, a.id, a.street
from company c
left join
(select * from address where address_status_id = 1) a
on c.id = a.company_id
我用Java/QueryDSL嘗試這樣做:
JPAQuery query = new JPAQuery(entityManager);
query = query.from(qCompany);
query = query.leftJoin(company.addresses, new JPASubQuery().from(qAddress)
.where(qAddress.addressStatusId.eq(AddressStatuss.ACTIVE.asBigDecimal())).list(qAddress));
但是JPA(並因此JPAQuery在QueryDSL)不支持a subquery in a JOIN clause
有沒有一種方法來重新修改SQL語句,以便它可以用JPA/QueryDSL表示?
編輯:如果它有所作爲,我們正在使用Oracle DB和Hibernate JPA提供程序。
Ouch,我們使用的是版本2.9,並且ON方法似乎不存在於其中。我看到它在3.2.0。在JPAQueryBase中。我們之前嘗試更新,但是在看到我們的代碼編譯所做的更改後再推遲。也許ON方法取代了WITH方法? –
是的,.with(a.addressStatusId.eq(1))正是我想要的! –
是的,'開'用'替換'。 –