如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;
}
};
}