我有一个包含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表和子表之间建立了一个内连接。
是否可以以在子表上进行外连接的方式进行配置
答案 0 :(得分:1)
总结一下 - 如果您的JPA提供程序是EclipseLink而不是there is a way,那么在连接继承策略中获取子对象时它应该使用OUTER JOIN。