一对多映射

时间:2010-10-02 16:48:26

标签: java database hibernate

我遇到了将某些场景映射到数据库的问题。问题是这样的。

有两个实体名为Employee(empID,empName)Task(taskID,taskName)

  • 员工可以执行ZERO-OR-MORE任务。
  • 任务可以有ZERO-OR-ONE员工。

我应该遵循的表结构是什么..

我将在java中使用spring MVC和hibernate来实现这个场景。我可以修复这个问题..

有什么想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

看起来您可能需要另一个名为EMPLOYEE_TASKS的表:

ID - sequence, PK.
EMPLOYEE_ID, numeric, not null, FK to ID in the EMPLOYEE table.
TASK_ID - numeric, unique key, not null, FK to ID in the TASKS table.

您的0或1名员工/任务要求由英国在TASK.TASK_ID上处理。 每位员工的0对多任务由EMPLOYEE_ID + TASK_ID对处理。因为TASK_ID是唯一的,所以这对不需要。在现实世界中,我可能会把它作为一个索引。

现在我使用hibernate的逆向工程工具来创建带注释的模型。我们将主键序列生成器规范放在reveng.xml文件中。


如果每个任务只有一名员工,则不需要此表。我们可以在TASK表中添加EMPLOYEE_ID,但是两个任务可能没有EMPLOYEE。这意味着我们无法将该列设为英国。因此,我们很难使用数据库来强制实施零或一约束。