У меня есть запрос типа:
select
emp.name,
emp.vehicle_id,
vehicle.model,
vehicle.color
from
emp
left outer join
vehicle
on emp.vehicle_id = vehicle.vehicle_id
where
lower(emp.name) = 'james'
or lower(vehicle.model) = 'ford'
order by (case
when lower(emp.name) = 'james' then 1
when lower(vehicle.model) = 'ford' then 2
end);
Я хочу написать это, используя CriteraBuilder
.
Поскольку я новичок в этом, я могу сделать где предложение, например:
public static Specification<EmpDetails> byVehicleModel(String vehicleModel) {
return (root, query, cb) -> {
// fetching vehicle from root
Vehicle vehicle = root.joinSet("vehicle", JoinType.LEFT);
return cb.and(cb.equal(cb.lower(vehicle.get("model")), vehicleModel.toLowerCase()));
};
}
Но как мне добавить часть Order By с Cases, упомянутую выше. Я не могу найти достаточно примеров для этого.
Пожалуйста, предложите.