如何解决JPA继承设计问题
我正在尝试使用继承为以下数据模型创建JPA实体。我有一个价格表,其中包含ID,开始日期和结束日期。有不同的定价类型,例如标准价格(每小时对用户收费)和批量价格(根据已售数量向用户收费)。对于层级价格,同一价格条目有多个条目。例如,如果交易量为0到100,则其价格为1美元;价格为101到1000,则价格为1.25美元;如果交易量超过1000,则价格为1.50美元。下面是我的数据模型
Price
ID
Start_Date
End_Date
Standard Price
ID
price_id(FK)
price
Tier Price
ID
Price_id (FK)
start_tier
end_tier
我正在尝试使用Spring Boot和JPA保留价格详细信息并为实体建模。我打算使用继承策略,将价格基类和标准和等级价格作为子类。我遇到了Tier Price子类的问题,因为多行一起形成一个单一的价格条目。以下是我在模型中可视化的内容,但这对Enity可能不适用。有没有一种创建满足以下要求的实体的方法,或者唯一的方法是通过将新表引入组层信息来更改数据模型。
public class TierPriceHolder extends price{
private List<Tiers> price;
}
解决方法
我不会评论将结构化信息嵌套在这样的平面表中是否是一个好主意,但是,如果您想将所有信息都保留在一个表中,则只需要一个附加的父实体将分层的分组即可价格:
public class VolumePrice extends Price {
@OneToMany
@JoinColumn(name = "volume_price_id")
private Collection<TierPrice> tiers;
}
有了这样的层次结构,您将简单地获得一个父行,指向它的多个子行都在同一个表中:
+----+----------+-----------------+------------+-------------+------------+----------+-------------+
| id | price_id | volume_price_id | start_date | end_date | start_tier | end_tier | DTYPE |
+----+----------+-----------------+------------+-------------+------------+----------+-------------+
| 1 | | | 1 Jan 2020 | 31 Dec 2020 | | | Price |
+----+----------+-----------------+------------+-------------+------------+----------+-------------+
| 2 | 1 | | | | | | VolumePrice |
+----+----------+-----------------+------------+-------------+------------+----------+-------------+
| 3 | | 2 | | | 0 | 100 | Tier |
+----+----------+-----------------+------------+-------------+------------+----------+-------------+
| | | 2 | | | 101 | 200 | Tier |
+----+----------+-----------------+------------+-------------+------------+----------+-------------+
(我对price_id
的含义仍然感到困惑,但希望您能理解一般的想法)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。