首页 > 解决方案 > Hibernate 扩展实体以使用附加连接进行读取

问题描述

我有一个实体对应于数据库中的某个表

@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 中创建一个鉴别器列,我不需要它,因为我使用ExtendedEntityonly 用于读取。我发现我使用@DiscriminatorFormula它将被解析为相同的整数值,如下所示:

@DiscriminatorFormula("0")
@DiscriminatorValue("0")
public class MyEntity

@DiscriminatorValue("00")
public class ExtendedEntity extends MyEntity

但这真的看起来像一个黑客。使用@MappedSuperclass我不能有关联,但这是我需要扩展我的实体的主要原因。

我还有哪些其他选择以及此用例的最佳实践是什么?

标签: javahibernatejpaspring-data-jpapersistence

解决方案


推荐阅读