【发布时间】:2021-12-07 15:21:52
【问题描述】:
假设我有一个实体Offer,它有很多价格。
@Entity
@Table(name = "offer")
data class Offer(
val prices: List<Price>,
@Id
val id: Long? = null
)
将Price 设为Entity 是否有意义,或者最好将其标记为Embeddable?如果有相同价格的报价怎么办?也许我们可以重复使用价格,还是不应该?
我正在寻找关于何时应该使用 Entity 以及何时使用 Embeddable 的良好解释。也许我们可以将它用作Entity,但设置orphanRemoval = true,所以在这种情况下,Price 的孩子将始终与Offer 一起被删除。
【问题讨论】:
-
Price是否具有身份,可以从其他实体引用?例如。产品设计团队设置的“价格”对象是否可能适用于许多产品?如果另一个产品具有相同的价格,它是否应该指向(引用)相同的实例?如果“价格”的值发生变化,这种变化是否会影响所有具有相同价格的产品?如果是这样,Price成为一个实体是有意义的。 -
不,不应该。产品彼此独立,但我认为使用已经存在的价格以防万一它是相同的即是有意义的。一千美元之类的。
-
Embeddable 只是编写可重用实体代码的一种方式。例如,在我的应用程序中,我在各种表中都有用户权限列,这是一个可嵌入的,因为所有这些实体中的列都是相同的。
标签: spring hibernate kotlin jpa