JPA如何使用InheritanceType.JOINED配置外连接

时间:2011-12-04 20:05:34

标签: inheritance jpa outer-join

我有一个包含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;

这一点很有效,直到数据库一致。

Rapporto

Id   COD_TIPORAPPORTO
1       4

Carte

Id   Description
1     Carta

因此,当我按ID 1加载Rapporto时,一切都很好。但是当db变得不一致时,所有的工作都很糟糕 想象一下,我没有更多子表Carte上的记录。当我尝试加载它时,我得到一个null对象,因为JPA在super表和子表之间建立了一个内连接。 是否可以以在子表上进行外连接的方式进行配置

1 个答案:

答案 0 :(得分:1)

总结一下 - 如果您的JPA提供程序是EclipseLink而不是there is a way,那么在连接继承策略中获取子对象时它应该使用OUTER JOIN。