我有一个对应于DB中某个表的实体
@Entity
@Table
public class MyEntity {
@Id
private Long id;
@Column
private String description;
@OneToMany
private List<Foo> foos;
...
//getters setters
...
}
我想将该实体扩展为只读,并具有对另一个表的附加连接。对于特定的读取用例,仅在一种情况下需要此连接:
@Entity
public class ExtendedEntity extends MyEntity {
@ManyToMany(fetch = FetchType.EAGER)
private List<Bar> bars;
}
仅使用扩展名即可在DB中创建一个鉴别符列,因为我仅将ExtendedEntity
用于读取,所以我不需要。我发现我使用@DiscriminatorFormula
进行了破解,它将被解析为相同的Integer值,如下所示:
@DiscriminatorFormula("0")
@DiscriminatorValue("0")
public class MyEntity
@DiscriminatorValue("00")
public class ExtendedEntity extends MyEntity
但这确实看起来像是骇客。使用@MappedSuperclass
时,我无法建立关联,但这是我需要扩展实体的主要原因。
我还有什么其他选择?该用例的最佳实践是什么?