我在JPQL中有两个与实体连接的查询。我需要获取两个结果中的资产(即,使用相同的表连接两次)。
第一个查询给出了一个具有特定属性的资产列表:
select distinct(a) from Asset a join a.properties p where p.name = :name
第二个查询为我提供了一个我可以访问的资产列表:
select distinct(assets) from Asset assets inner join assets.groups assetgroups inner join assetgroups.permissions permissions inner join permissions.usrGroups usergroups with usergroups.id in :groups
我需要一个我可以访问的资产列表和该属性名称。我使用Hibernate作为JPA后端。我尝试了几种选择,但迄今为止都没有成功。我该怎么办?
谢谢
答案 0 :(得分:1)
假设Asset
具有名为assetId
的id字段,这应该有效:
select asset from Asset asset
WHERE asset.assetId in (select distinct(a.assetId) from Asset a join a.properties p where p.name = :name)
AND asset.assetId in (select distinct(a.assetId) from Asset a inner join a.groups assetgroups inner join assetgroups.permissions permissions inner join permissions.usrGroups usergroups with usergroups.id in :groups)