JPA, как настроить внешнее объединение с InheritanceType.JOINED - PullRequest
1 голос
/ 05 декабря 2011

У меня есть модель домена с InheritanceType.JOINED.

@Table(name = "S_MC_CC_RAPPORTI")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "COD_TIPORAPPORTO")
public class RapportoImpl implements Rapporto, Cloneable {

    @Id
    @Column(name = "COD_RAPPORTO")
    protected Long codiceRapporto;

и подкласс:

@Entity
@Table(name = "CARTE")
@DiscriminatorValue("4 ")
public class CartaImpl extends RapportoImpl implements Carta, Cloneable {

    private static final long serialVersionUID = 1723366781345274590L;

Это прекрасно работает, пока БД не станет согласованным.

Таблица Раппорто

Id   COD_TIPORAPPORTO
1       4

Таблица Карта

Id   Description
1     Carta

Так что, когда я загружаю Rapporto по id 1, все прекрасно работает. Но когда база данных становится несовместимой, все работает плохо.
Представьте, что у меня больше нет записи на дочерней таблице Carte. Когда я пытаюсь загрузить его, я получаю объект null, потому что JPA создает внутреннее соединение между супер и дочерней таблицей. Можно ли настроить его так, чтобы внешнее соединение на дочерней таблице

1 Ответ

1 голос
/ 05 декабря 2011

Подводя итог - если ваш JPA-провайдер имеет EclipseLink, чем , есть способ сказать, что он должен использовать OUTER JOINs при извлечении дочерних объектов в стратегии наследования объединений.

...