包含唯一实体和共享实体列表的多个实体

时间:2018-06-03 20:30:24

标签: hibernate spring-data-jpa database-schema

我的数据库设计有问题,我不知道如何优雅地解决这个问题。 这些是我的示例实体:

// A Entities
@Entity
class A {
    @OneToMany
    List<AElement> elements;
}

@Entity
abstract class AElement {}

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
class AConcElement extends AElement {}

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
class ABreak extends AElement {}


// B Entities
@Entitiy
class B {
   @OneToMany
   List<BElement> elements;
}

@Entity
abstract class BElement {}

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
class BConcElement extends BElement {}

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
class BBreak extends BElement {}

因此,您可以看到我有两个实体AB,两者都有一个元素列表。目前我每个人都有一个抽象实体。 “问题”是Break实体,两个列表基本相同。为了维护DRY概念,我想防止必须为每个可以包含元素列表的类编写相同的Break实体。现在我显然可以使用一个抽象实体而不是两个类,但这会导致不必要的连接,因为A中的列表永远不会包含BConcElement类和反之亦然。是否存在我没​​有看到的另一种解决方案,或者我是否需要妥协,从而允许不必要的连接或存在多个相同的Break实体?

0 个答案:

没有答案