Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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
Java 在JPA中将一个实体与多个子类实体关联为与超类的单一关系?_Java_Jpa_Orm_Playframework 2.1_Ebean - Fatal编程技术网

Java 在JPA中将一个实体与多个子类实体关联为与超类的单一关系?

Java 在JPA中将一个实体与多个子类实体关联为与超类的单一关系?,java,jpa,orm,playframework-2.1,ebean,Java,Jpa,Orm,Playframework 2.1,Ebean,我正在使用Play 2框架和ebean ORM用Java构建一个应用程序 我有一个实体类Person,它与多个具有超类型证书的实体类相关,这是一个抽象@MappedSuperclass。目前,我正在为每个子类创建一个关系,如下所示: public class `Person` extends Model { // elided... @OneToMany public List<SubType1> subType1s; @OneToMany

我正在使用Play 2框架和ebean ORM用Java构建一个应用程序

我有一个实体类
Person
,它与多个具有超类型
证书的实体类相关,这是一个
抽象
@MappedSuperclass
。目前,我正在为每个子类创建一个关系,如下所示:

public class `Person` extends Model {
    // elided...
    @OneToMany
    public List<SubType1> subType1s;

    @OneToMany
    List<SubType2> subType2s;
    // elided...
}
public class `Person` extends Model {
    // elided...
    @OneToMany
    public List<SuperType> superTypes;
    // elided...
}
我想知道的是:是否可以将
Person
中的子类实体列表组合到一个超类列表中,如下所示:

public class `Person` extends Model {
    // elided...
    @OneToMany
    public List<SubType1> subType1s;

    @OneToMany
    List<SubType2> subType2s;
    // elided...
}
public class `Person` extends Model {
    // elided...
    @OneToMany
    public List<SuperType> superTypes;
    // elided...
}
public类`Person`扩展模型{
//省略。。。
@独身癖
公共列表超类型;
//省略。。。
}

不,不可能。关联是实体之间的关联,而不是MappedSuperclass。如果你有一个“一个一个”可以是“一个多个一个”的反向关联


如果需要,那么证书应该用@Entity注释,并且应该包含与Person的多通关联,而不是所有子类。

我注意到,当我与超类型实体和子类型实体都有关系时,检索超类关系的方法只返回这些,子类关系必须单独获取。我不认为将
证书
作为一个实体,并赋予它与
的关系将允许我添加和检索
证书
的子类型。我没有使用EBean的经验,但正确的JPA实现可以获得实体的所有实例,无论它们是否是子类的实例,在这种情况下。所以,要么Eben有问题,要么你的代码有问题。