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 приписывать. Об этом следует сообщить, эта часть руководства вводит в заблуждение и ошибочна.

Смотрите также

Другие вопросы по тегам