@Embeddable 或@Entity 我们应该选择哪一个
@Embeddable or @Entity which one should we choose
假设我有一个实体 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
的 child 将始终与 Offer
一起删除。
我绝对不会尝试在 Offer
之间重复使用价格。原因是您可能出于任何原因更改该价格,并且它会无意中更改所有 Offer
。对我来说,这只是要求出现问题和错误。除非就您的业务案例而言有充分的理由强制要求这样做,否则我不会这样做。
写完这篇文章后,根据您提供的信息,我肯定会选择 @Embeddable
,因为看起来确实如此。 Price
.
有一个单独的实体和 table 非常有益
假设我有一个实体 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
的 child 将始终与 Offer
一起删除。
我绝对不会尝试在 Offer
之间重复使用价格。原因是您可能出于任何原因更改该价格,并且它会无意中更改所有 Offer
。对我来说,这只是要求出现问题和错误。除非就您的业务案例而言有充分的理由强制要求这样做,否则我不会这样做。
写完这篇文章后,根据您提供的信息,我肯定会选择 @Embeddable
,因为看起来确实如此。 Price
.