JPA 仕様では、このようなショートカットは定義されていません。状態フィールド (Id
プロパティを含む) へのアクセスは名前によるものです。
4.3 抽象スキーマ型とクエリ ドメイン
(...)
非形式的には、エンティティの抽象スキーマ タイプは次のように特徴付けることができます。
- エンティティ クラスのすべての永続フィールドまたは get アクセサー メソッド (永続プロパティの場合) には、抽象スキーマ型がフィールドの型またはアクセサー メソッドの結果型に対応するフィールド (「状態フィールド」) があります。
- エンティティ クラスのすべての永続関係フィールドまたは get アクセサー メソッド (永続関係プロパティの場合) には、関連するエンティティの抽象スキーマ型 (または、関係が1 対多または多対多、そのようなコレクション)。
(...)
つまり、これは Hibernate 固有のものなので (セクション14.5. identifier プロパティの参照を参照)、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].