所以我有2个不同的实体:
@Entity
data class PickupOrderEvent(
@Id
override val id: UUID,
@Enumerated(EnumType.STRING)
@Column(nullable = false)
override val eventType: EventType,
// other fields...
)
@Entity
data class DeliveryOrderEvent(
@Id
override val id: UUID,
@Enumerated(EnumType.STRING)
@Column(nullable = false)
override val eventType: EventType,
// other fields... different than PickupOrderEvent
)
这两个都从父类OrderEvent
继承,但是它们具有其他(不同的)字段。
我最终想要做的是接收一个OrderEvent id
,并从其相应的表中获取该事件。但是,我不想查看两个表(以后再查看更多表)来确定类型是什么。
我想这里的正确答案是创建一个看起来像这样的“查找表”:
Events(
val eventId: UUID, // FK to the other tables PK
val eventType: EventType
)
因此,我将执行以下操作:
1-查看此表,并找出此订单的eventType
是什么。
2-查看相应的表(取决于上面的eventType)并获取事件
我如何/应该怎么做?
我认为您不需要查找表。
这看起来更像"JOINED" inheritance mapping strategy的情况。