kos*_*čák 5 java sql jpa querydsl
我需要从数据库中选择具有活动地址的公司(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
Run Code Online (Sandbox Code Playgroud)
我在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));
Run Code Online (Sandbox Code Playgroud)
但是,JPA(以及因此QueryDSL中的JPAQuery)不支持JOIN子句中的子查询
有没有办法重新编写SQL语句,以便它可以用JPA/QueryDSL表示?
编辑:如果它有所作为,我们正在使用Oracle DB和Hibernate JPA提供程序.
也许是这样的
select c.id, c.name, a.id, a.street
from Company c
left join c.addresses a on a.addressStatusId = 1
Run Code Online (Sandbox Code Playgroud)
在Querydsl
query.from(c)
.leftJoin(c.addresses, a)
.on(a.addressStatusId.eq(1))
.list(c.id, c.name, a.id, a.street)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5475 次 |
| 最近记录: |