2

同僚、JPAを使用して、次の問題を解決する必要があります。データベースレベルで3つのエンティティ(SuperEntity、DetailsAEntity、DetailsBEntityなど)を終了します。SuperEntityには、DetailsAEntityおよびDetailsBEntityのフィールドの共通部分が含まれています。

質問:JPAから混合要素DetailsAEntityとDetailsBEntityのコレクションを解決することは可能ですか?エンティティのクラスを指定するために、トップリンクの拡張機能を終了する可能性がありますか?

4

2 に答える 2

3

SuperEntityが継承ツリーのルートとしてマップされていると仮定すると、このタイプのクエリの結果は、その具象サブクラスの異種コレクションを返す可能性があります。

于 2010-08-24T19:17:59.630 に答える
0

クエリは、標準のJPAでは多形です。JPA1.0仕様の関連セクションは次のとおりです。

3.6.5ポリモーフィッククエリ

デフォルトでは、すべてのクエリはポリモーフィックです。つまり、クエリのFROM句は、明示的に参照する特定のエンティティクラスのインスタンスだけでなく、サブクラスも指定します。クエリによって返されるインスタンスには、クエリ条件を満たすサブクラスのインスタンスが含まれます。

たとえば、クエリ

select avg(e.salary) from Employee e where e.salary > 80000

および Employeeなどのサブタイプを含む、すべての従業員の平均給与を返します 。ManagerExempt

4.4.8ポリモーフィズム

JavaPersistenceクエリは自動的にポリモーフィックになります。クエリのFROM句は、明示的に参照する特定のエンティティクラスのインスタンスだけでなく、サブクラスのインスタンスも指定します。クエリによって返されるインスタンスには、クエリ条件を満たすサブクラスのインスタンスが含まれます。

したがって、スーパータイプに対するクエリには、デフォルトで結果にサブタイプが含まれます。

于 2010-08-25T02:16:58.197 に答える