JPA / toplink гетерогенный список объектов - PullRequest
2 голосов
/ 24 августа 2010

Коллеги, используя JPA, мне нужно решить следующую проблему: на уровне базы данных выходит 3 объекта (например, SuperEntity, DetailsAEntity и DetailsBEntity).SuperEntity содержит общую часть полей для DetailsAEntity и DetailsBEntity.

Итак, вопрос: можно ли разрешить сбор смешанных элементов DetailsAEntity и DetailsBEntity из JPA?Может быть, выходит какое-то расширение в toplink, чтобы указать класс для сущности?

Ответы [ 2 ]

3 голосов
/ 24 августа 2010

Если предположить, что SuperEntity отображается как корень дерева наследования, то результат запросов для этого типа может вернуть гетерогенную коллекцию его конкретных подклассов.

0 голосов
/ 25 августа 2010

Запросы полиморфны в стандартном JPA. Вот соответствующие разделы из спецификации JPA 1.0:

3.6.5 Полиморфные запросы

По умолчанию все запросы полиморфный. То есть предложение FROM запроса обозначает не только экземпляры конкретной сущности класс (ы), к которому это явно относится, но подклассы также. экземпляры, возвращаемые запросом, включают экземпляры подклассов, которые удовлетворить условия запроса.

Например, запрос

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

возвращает среднюю зарплату всех сотрудники, включая подтипы Employee, например Manager и Exempt.

И

4.4.8 Полиморфизм

Запросы Java Persistence автоматически полиморфный. ОТ пункт запроса обозначает не только экземпляры конкретной сущности класс (ы), к которому явно относится но и подклассов. экземпляры, возвращаемые запросом, включают экземпляры подклассов, которые удовлетворить критерии запроса.

Таким образом, любой запрос по супертипу будет включать в результаты подтипы по умолчанию.

...