Hibernate扩展实体,可通过其他联接进行读取

时间:2019-05-13 16:07:36

标签: java hibernate jpa spring-data-jpa persistence

我有一个对应于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时,我无法建立关联,但这是我需要扩展实体的主要原因。

我还有什么其他选择?该用例的最佳实践是什么?

0 个答案:

没有答案