Можно ли выполнить соединение с CriteriaBuilder
для таблицы, на которую не ссылается выбранный объект? Поскольку CriteriaBuilder.join()
ожидает в качестве параметра имя атрибута, похоже, оно не будет работать.
Для большей ясности исходный запрос выглядит так:
select Vehicle v left join VehicleStatus vs on v.id = vs.vehicleId
...
Vehicle
не определяет отношения с VehicleStatus
. И изменения в базе данных в настоящее время нежелательны, хотя возможны при необходимости.
В настоящее время у меня есть код
final Join<Vehicle, VehicleStatus> vs = vehicle.join("vs", JoinType.LEFT);
vs.on(cb.equal(vs.get("vehicleId"), vehicle.get("id")));
не удается с java.lang.IllegalArgumentException: Unable to locate Attribute with the the given name [vs] on this ManagedType