如何在不使用hibernate覆盖以前数据的情况下为特定列插入新行

时间:2016-09-28 08:31:57

标签: java mysql hibernate

我正在做一个简单的快递跟踪项目,其中有两个名为TrackingStatusParcelTracking的表。

ParcelTracking表具有Tracking_ID作为主键,TrackingStatus_ID作为外键,它是TrackingStatus表的主键。

每次信使状态发生变化时,我都想添加新的TrackingStatus_ID,以便我可以检索该特定Tracking_ID的所有先前状态。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

根据我的理解,这不是“更新”的问题,而是更多的架构和模型布局问题。你的列看起来有些混乱。

通过你在问题中所说的,你似乎正在这样做:

| TrakingStatus |        | ParcelTracking   |
|---------------|        |------------------|
| Id            |        | TrackingId       |
| ...           |--------| TrackingStatusId |
|               |        | ...              |

所以看起来如果快递员发生了变化,那么你想要添加一个新的TrackingStatusId,我猜你要在TrackingStatus表中创建一条新记录然后引用ParcelTracking表中的内容。您应该在此处使用OneToMany关系与另一个表格,该表格允许您在TrackingStatus中为ParcelTracking中的单个地块引用行,您将拥有类似的内容:

| TrakingStatus |          | ParcelStatuses  |              | ParcelTracking   |
|---------------|          |-----------------|              |------------------|
| Id            | -------- | TrackingId      | *-----------1| TrackingId       |
| ...           |          | TrackingStatusId|              | ...              |

这样,当信使更改时您不需要覆盖现有的TrackingStatusId值,您只需创建另一条记录并将其与同一ParcelTracking对象链接即可。