首页 > 解决方案 > Spring JPA:我应该如何创建/使用查找表?

问题描述

所以我有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)并获取事件

我该怎么做/应该怎么做?

标签: springjpakotlinspring-data-jpa

解决方案


我认为您不需要查找表。

这看起来更像是“JOINED”继承映射策略的一个案例。


推荐阅读