Criteria Builder ПРИСОЕДИНЯЙТЕСЬ к таблице без ссылок - PullRequest
0 голосов
/ 09 января 2019

Можно ли выполнить соединение с 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

1 Ответ

0 голосов
/ 09 января 2019

Нет, вам требуется сопоставленная ассоциация для создания предложения соединения с CriteriaBuilder.

С Hibernate вы можете объединить 2 неассоциированные сущности в запросе JPQL. Синтаксис практически идентичен SQL. Но это особенность Hibernate, а не часть стандарта JPA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...