Java 在JPA中将一个实体与多个子类实体关联为与超类的单一关系?
我正在使用Play 2框架和ebean ORM用Java构建一个应用程序 我有一个实体类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
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有问题,要么你的代码有问题。