JPA中高级查询怎样实现join子查询

如SQL:

select assets_entity.* from assets_entity 
left join (
    select inventory_recording.assets_entity_id from inventory_recording where inventory_recording.inventory_task_id = ?
) as irr 
on assets_entity.id = irr.assets_entity_id 
where irr.assets_entity_id is null;

下面是我写到一半的,可是root.join不知道怎么放子查询

private void listsss(){
        Specification<AssetsEntity> specification = new Specification<AssetsEntity>() {
            @Override
            public Predicate toPredicate(Root<AssetsEntity> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
                //Path<String> assetsNumberPath = root.get("assetsNumber");

                // 完成子查询
                Subquery subQuery = criteriaQuery.subquery(String.class);
                Root IRFrom = subQuery.from(InventoryRecording.class);
                subQuery.select(IRFrom.get("assetsEntity")).where(criteriaBuilder.equal(IRFrom.get("inventoryTask"), 1L));

                // left join

                List<Predicate> predicates = new ArrayList<>();

                Predicate[] array = new Predicate[predicates.size()];
                criteriaQuery.where(predicates.toArray(array));
                return null;
            }
        };
    }

https://blog.csdn.net/u012448083/article/details/85257339

复杂的sql通过本地sql完成
这样以后做索引优化和二次维护都好弄

jpa只适合单表操作,现在项目一般采用spring jpa和spring jdbc模式一起
spring jdbc负责复杂sql

参考我自己项目
https://github.com/baichangda/MySpringBootFrame.git

像这种复杂的直接拼 SQL语句会方便些