Spring Hibernate映射:如何创建/设计双向关系实体? 问题陈述

Spring Hibernate映射:如何创建/设计双向关系实体? 问题陈述,spring,hibernate,database-design,erd,Spring,Hibernate,Database Design,Erd,假设您的报告具有属性调用状态 但每个状态更改都需要记录,并且由哪个用户记录。 因此,你很可能会以 REPORT REPORT_ID REPORT_STATUS STATUS_ID REPORT_ID 但是,如果没有“计算”(即获取上次修改日期),我应该如何获取当前状态 我想出了这个解决办法 REPORT REPORT_ID CURRENT_STATUS_ID REPORT_STATUS STATUS_ID REPORT_ID 假设您需要更多属性,我怀疑这种创建表的方法在尝试创建报告然后尝

假设您的报告具有属性调用状态 但每个状态更改都需要记录,并且由哪个用户记录。 因此,你很可能会以

REPORT
REPORT_ID

REPORT_STATUS
STATUS_ID
REPORT_ID
但是,如果没有“计算”(即获取上次修改日期),我应该如何获取当前状态

我想出了这个解决办法

REPORT
REPORT_ID
CURRENT_STATUS_ID

REPORT_STATUS
STATUS_ID
REPORT_ID
假设您需要更多属性,我怀疑这种创建表的方法在尝试
创建报告
然后尝试
创建状态
时与hibernate有一些问题

我只是尝试使用此关系的注释创建hibernate映射。 我想救的每个人。。我明白了

未找到状态报告主键父键

这意味着在尝试创建报告状态时,尚未创建报告


我如何做一个适当的映射,使我能够同时提交两者

这里似乎存在逻辑上的不一致性

假设我们需要生成一个报告。现在存储了报告id,但我们需要一个状态id

但要获得新的状态,我们需要指定一个报告。由于未创建报告,因此无法创建状态,反之亦然

我假设状态的数量有限,所以让我们将它们存储在一个名为status的表中

REPORT
REPORT_ID
CURRENT_STATUS_ID

REPORT_STATUS
STATUS_ID
REPORT_ID

STATUS
STATUS_ID
首先创建一个新报告,并将状态对象附加到该报告。 然后创建一个报告状态的对象

以防设置了级联类型,请将其删除。Hibernate有时会感到困惑

编辑

你似乎被桌子弄糊涂了

报表表将保存报表id、报表数据及其当前状态

report_status表将保存报表的所有以前状态以及当前状态,它们表示为status_id和report_id的复合主键

状态表将保存报表可能具有的所有状态。 例如,如果可能的状态为“暂停”、“生产中”、“发布”、“编辑”,则这些状态将存储在状态表中


其他两个表将根据它们所指的状态引用此项。

您为什么怀疑这一点?这似乎是完全合法的?@CarlSaldanha我似乎无法解决这一问题,请帮助我假设报告不再有当前状态ID?我想这是一个混乱。。状态报告实际上包含所有状态更改。。。这就是为什么它作为一个报告的id在它。我认为这个问题更能描述我的问题