如何使用JPA对此建模?

| 我想对几个对象关系建模,而我目前尚不确定执行此操作的明智方法。假设“ 0”与不同的RecordSources具有OneToMany关系。
RecordSources
的共同属性是
long id
boolean preferred
。其他属性是个别的,将来记录源的数量可能会增加。 一种可能是
Record
@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.LAZY, mappedBy=\"record\")
private List<GenericSimpleRecordSource> recordSources;
GenericSimpleRecordSource
看起来像这样:
@Entity
public class GenericSimpleRecordSource implements Serializable
{
    public static enum Type {a,b}

    @ManyToOne private Record record;

    @NotNull
    private Type sourceType;

    @OneToOne(cascade = CascadeType.ALL,mappedBy=\"source\")
    private SimpleRecordSourceA sourceA;

    @OneToOne(cascade = CascadeType.ALL,mappedBy=\"source\")
    private SimpleRecordSourceB sourceB;
}
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
{
  ...
}
这似乎更聪明,但是使用继承有什么缺点吗?我感谢对这两种方法甚至其他替代方案的任何评论。 是否可以像这样从ѭ0建模
@OneToMany
关系?
@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.LAZY, mappedBy=\"record\")
private List<GenericRecordSource> recordSources;
    
已邀请:

要回复问题请先登录注册