JPA / Метамодель: Странный (несовместимый?) Пример в Sun Docs - PullRequest
11 голосов
/ 07 октября 2010

В ресурсах Sun Online они приводят пример использования API Criteria / Metamodel API, но, насколько я понимаю, 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_ для метамодели, но их импорт приведет к конфликту с именами переменных ... Я прав?

__

(вопрос также связан с этим one )

1 Ответ

12 голосов
/ 07 октября 2010

Этот пример неверен , авторы смешивают канонические статические классы метамодели (сгенерированные) с классами, полученными через Metamodel API.Предполагается, что они используют либо слабо типизированный API, либо сгенерированные классы строгого типа, но не оба вместе.В их случае Pet_ (что является невероятно плохим выбором имен и вводит в заблуждение) действительно не имеет никакого атрибута owners.Об этом следует сообщить, эта часть руководства вводит в заблуждение и ошибочна.

См. Также

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