我的数据库设计有问题,我不知道如何优雅地解决这个问题。 这些是我的示例实体:
// 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 {}
因此,您可以看到我有两个实体A
和B
,两者都有一个元素列表。目前我每个人都有一个抽象实体。 “问题”是Break
实体,两个列表基本相同。为了维护DRY概念,我想防止必须为每个可以包含元素列表的类编写相同的Break
实体。现在我显然可以使用一个抽象实体而不是两个类,但这会导致不必要的连接,因为A
中的列表永远不会包含BConcElement
类和反之亦然。是否存在我没有看到的另一种解决方案,或者我是否需要妥协,从而允许不必要的连接或存在多个相同的Break
实体?