У меня есть структура юридических лиц для ведения строительных, комнаты и полы, как это:OpenJPA присоединиться запрос не возвращает никаких данных
Строительство - один ко многим - Пол - один ко многим номер
I» я смотрю на API критериев, и моя цель - собрать все комнаты, сначала связанные с тем же полом, и найти все комнаты, связанные с одним зданием.
Что касается первой задачи, мне удалось с помощью следующего кода:
CriteriaQuery<TRoom> criteria = em.getCriteriaBuilder().createQuery(TRoom.class);
Root<TRoom> troom = criteria.from(TRoom.class);
Predicate condition = em.getCriteriaBuilder().equal(troom.get("tfloor"), em.find(TFloor.class, targetRoom.getFloor().getId()));
List<TRoom> trooms = em.createQuery(criteria.where(condition)).getResultList();
Я попытался использовать то же самое с другой путь (например, «troom.get (» tfloor.tbuilding «)» или troom. . .get ("tfloor") получить ("tbuilding")) и присоединиться к так:
Join<TRoom, TFloor> join = troom.join("tfloor");
Predicate condition = em.getCriteriaBuilder().equal(join.get("tbuilding") , em.find(TFloor.class, targetRoom.getFloor().getBuilding().getBuildingId()));
Но без толку тоже. Я получаю пустой список или исключения.
Каков правильный способ получить все помещения для строительства?