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;