Java 如何用JPA对此进行建模?

Java 如何用JPA对此进行建模?,java,inheritance,jpa,data-modeling,Java,Inheritance,Jpa,Data Modeling,我想对两个对象关系进行建模,但目前还不确定是否有一种明智的方法可以做到这一点。让我们假设一个记录与不同的记录源有一个单一的关系。RecordSources的公共属性是long id和boolean preferred。其他属性是独立的,未来记录源的数量可能会增加 一种可能性是记录 @OneToMany(cascade = CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="record") private List<GenericSimpleR

我想对两个对象关系进行建模,但目前还不确定是否有一种明智的方法可以做到这一点。让我们假设一个
记录
与不同的记录源有一个单一的关系。
RecordSources
的公共属性是
long id
boolean preferred
。其他属性是独立的,未来记录源的数量可能会增加

一种可能性是记录

@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="record")
private List<GenericSimpleRecordSource> recordSources;
SimpleRecordSourceA
SimpleRecordSourceA
是单独的
@Entity
类。我对这种方法感到不舒服,使用继承可能更好:

@Entity
@Inheritance(strategy= InheritanceType.TABLE_PER_CLASS)
@DiscriminatorColumn(name="type")
@DiscriminatorValue("generic")
public class GenericRecordSource
{
   @Id @GeneratedValue(strategy=GenerationType.AUTO) private long id;
   @ManyToOne private Record record;
   private boolean preferred;
}

@Entity
@DiscriminatorValue("A")
public class RecordSourceA extends GenericRecordSource
{
  ...
}

@Entity
@DiscriminatorValue("B")
public class RecordSourceB extends GenericRecordSource
{
  ...
}
这似乎更聪明,但使用继承有什么缺点吗?我非常感谢对这两种方法或其他替代方法的任何评论

有没有可能像这样从
记录中对
@OneToMany
关系建模

@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="record")
private List<GenericRecordSource> recordSources;
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy=“record”)
私人名单记录来源;

解决最后一部分。。。@OneToMany应该按照您现有的方式工作,假设该关系基于GenericRecordSource中定义的字段/列。您有一个
长id
,因此它应该可以工作。
@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="record")
private List<GenericRecordSource> recordSources;