Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA如何使用InheritanceType.JOINED配置外部联接_Inheritance_Jpa_Outer Join - Fatal编程技术网

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

JPA如何使用InheritanceType.JOINED配置外部联接,inheritance,jpa,outer-join,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 =

我有一个具有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;
在DB保持一致之前,这非常有效

REPARTO

Id   COD_TIPORAPPORTO
1       4
点菜

Id   Description
1     Carta
因此,当我通过id 1加载一个
rappo
时,一切都很好。但是当数据库不一致时,所有的工作都不好。
假设我在子表
Carte
上没有更多的记录。当我尝试加载它时,我得到一个
null
对象,因为JPA在超级表和子表之间进行内部联接。
如果您的JPA提供程序是EclipseLink,则可以在获取联接继承策略中的子对象时使用外部联接。

总结-如果您的JPA提供程序是EclipseLink,则在获取子对象时使用外部联接。

总结-如果您的JPA提供程序是EclipseLink,则在在联接继承策略中获取子对象。

因此,这种情况下,父表具有具有特定ID的行,但没有子表行具有与父行的FK?是的,就是这种情况。我必须在我的生产环境中处理这样的情况。执行一个特别要求超类的查询会有帮助吗?我在entitymanager上查询超类ase,如下所述:'reportoimpl reportoimpl=entitymanager.find(reportoimpl.class,5l);assertNotNull(reportoimpl);'在这种情况下,
reportoimpl
为空?因此,这是一种情况,其中父表具有具有特定ID的行,但没有子表行具有到父行的FK?是的,这是一种情况。我必须在我的生产环境中处理这样的情况。执行一个特别要求超类的查询会有帮助吗?我在entitymanager上查询超类ase,如下所述:'reportoimpl reportoimpl=entitymanager.find(reportoimpl.class,5l);assertNotNull(reportoimpl);'在这种情况下,
reportoimpl
为空?请注意,这是用于查询具有子类的根类或分支类,而不是特定类,因此可能不理想。您可以尝试,但一般来说,您应该考虑更改模型或修复DATANOTET,这是为了查询具有子类的根类或分支类,而不是特定类,因此可能不太理想。您可以尝试,但一般来说,您应该考虑更改模型或修复数据。