Спецификация JPA не определяет такой ярлык, доступ к полям состояния (включая свойство Id
) осуществляется по имени:
4.3 Абстрактные типы схем и домены запросов
(...)
Неформально тип абстрактной схемы сущности можно охарактеризовать следующим образом:
- Для каждого постоянного поля или метода доступа get (для постоянного свойства) класса сущности, существует поле («состояние-поле»), тип абстрактной схемы которого соответствует типу поля или типу результата метода метода доступа.
- Для каждого постоянного поля отношения или метода доступа getВ методе (для постоянного свойства отношения) класса сущности существует поле («ассоциативное поле»), тип которого является типом абстрактной схемы связанного объекта (или, если это отношение один ко многим или много-to-many, коллекция таких).
(...)
Другими словами, это специфично для Hibernate (см. раздел 14.5.обращатьсявызов идентификатора свойства ), поэтому не надейтесь на это, если хотите написать JPQL.
Вот что вы получите, например, с EclipseLink (MyEntity
не имеет поля id
):
java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Error compiling the query [select e from MyEntity e where e.id = :id], line 1, column 33: unknown state or association field [id] of class [com.acme.MyEntity].