JPA/ Метамодель: Странный (несовместимый?) Пример в Sun Docs
В ресурсах Sun Online они приводят пример использования API Criteria / Metamodel, но, насколько я понимаю, Java кажется невозможным:
CriteriaQuery<Pet> cq = cb.createQuery(Pet.class);
Metamodel m = em.getMetamodel();
EntityType<Pet> Pet_ = m.entity(Pet.class);
EntityType<Owner> Owner_ = m.entity(Owner.class);
Root<Pet> pet = cq.from(Pet.class);
Join<Owner, Address> address = cq.join(**Pet_.owners**).join(**Owner_.addresses**);
Pet_
это экземпляр класса EntityType
который не определяет ни одного атрибута с именем owners
или же addresses
,
Они определяют классы с именем Pet_
а также Owner_
для метамодели, но их импорт здесь создаст конфликт с именами переменных... Я прав?
__
(вопрос также связан с этим)
1 ответ
Этот пример неверен, авторы смешивают канонические классы статических метамоделей (сгенерированные) с классами, полученными через API метамодели. Предполагается, что они используют либо слабо типизированный API, либо сгенерированные классы строгого типа, но не оба вместе. В их случае Pet_
(что является невероятно плохим выбором имен и вводит в заблуждение) на самом деле не имеет никакого owners
приписывать. Об этом следует сообщить, эта часть руководства вводит в заблуждение и ошибочна.