我需要重构与餐厅菜肴修饰符一起使用的代码。例如,调节剂是各种披萨酱,它们可以改变这些相同披萨的成本。
有餐桌修饰(modifiers)和产品(dishes)。他们之间的联系是多对多的。之前的一位同事制作了一个拐杖,以增强连接表的形式将修改器与菜肴连接起来:
create table modification_product
(
disabled bit,
modification_id int,
product_id int
)
该表允许您关闭单个菜肴的修改器,而无需从数据库中删除记录或向修改表全局添加标志。但是相同的标志不允许我应用hibernate的@ManyToMany注释并配置@JoinTable。
如何重构这个地方,使得存在多对多关系,但同时又可以专门针对所选菜肴禁用修改器?
应删除该列
disabled。disabled多对多表中的列是数据仓库的解决方案;OLTP 应用程序不需要它们。有一个机会,它叫做
DELETE。@ManyToMany将为您做这件事。因此,禁用的修饰符根本不会存储在表中。如果您需要获取某道菜打开或关闭的修饰符的列表,可以使用以下命令来完成
modification LEFT JOIN modification_productPS 如果
modification_product除了 之外还有其他列disabled,那么,正如 @Alex Krass 在评论中指出的那样,这是一个单独的实体