Почему выражения JPQL не могут выходить за пределы полей отношений, которые являются коллекциями? - PullRequest
0 голосов
/ 03 июля 2019

Выдержка из учебника по Java EE 7 :

SELECT DISTINCT p FROM Player p, IN (p.teams) AS t WHERE t.city = :city

Выражения не могут выходить за пределы (или уточнять) полей отношений, которые являются коллекциями.В синтаксисе выражения поле со значением коллекции является терминальным символом.Поскольку поле groups является коллекцией, предложение WHERE не может указывать p.teams.city (недопустимое выражение).

Почему выражения не могут выходить за пределы полей отношений, которые являются коллекциями?

1 Ответ

1 голос
/ 03 июля 2019

Я не проектировал язык, и я, конечно, мог пропустить более важные причины, но имхо, это не имело бы особого смысла: p.teams.city читается как "свойство city свойства teamsp».Но teams это коллекция.И коллекции не имеют никакого свойства city.

Это по крайней мере хороший способ помнить, что это не валидный JPQL.

...