所以我有一个表,它有一个自动增量主键和2个外键,每个表到不同的表主键。所以基本上这个表用于存储表1和表2之间的关系,如下所示。
this_table_id table_one_id table_two_id
1 1 2
2 1 1
3 2 1
用户可以同时更新由table_one_id分组的所有条目,因此向用户显示所有table_one_id = 1,并且他可以删除table_one_id = 1与表2条目的关系。
目前我实施的解决方案是,无论用户做什么更新。当他提交我删除该table_one_id的所有先前条目并再次插入值。因此,如果他更新了它们,它们会被改变,如果不是它只是浪费了查询。平均案例场景大多有4个条目,因此不是很密集。
我想应该有一个更优雅的解决方案然后删除所有旧值,我唯一能想到的就是检查更改n然后根据什么进行更新或删除或插入每个条目用户做了但感觉很乏味。
ps:使用jsf前端和jpa后端
进一步澄清
我正在寻找的是当用户在单个列中显示多个具有相同值的行时的理论,例如table_one_id = 1(因此他将显示上表中的第1行和第2行)并且他删除了几行,添加新行并按提交
是以编程方式处理它的最佳方式。我应该检查他的每个新条目,看看它是否已经在表中,如果它不在表中添加它们,如果它们在表中留下它们并且如果用户删除了某些东西则删除它们或者是否有更好的方法。是删除所有旧条目并插入新的合理解决方案
答案 0 :(得分:0)
尝试使用触发器。每当更新事件发生时,触发器可以帮助您在该事件之前或之后触发查询,而无需一次又一次地完成繁琐的更新工作。你可以参考>> http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html了解语法和用法。
答案 1 :(得分:0)
要配置Many-to-Many关系,您需要映射表,但不需要this_table_id
列。
映射表在JPA中不是单独的实体,因此不需要ID列。见here