当前位置: 首页 > 面试题库 >

编写一对多关系

莫典
2023-03-14
问题内容

所以我很惊讶在Google和stackoverflow上进行搜索不会返回更多结果。

在OO编程中(我正在使用Java),如何正确实现一对多关系?

我有一Customer堂课Job。我的申请是针对一家虚构的公司,该公司可以为客户完成工作。我当前的实现是使Job该类与Customer该类无关,根本没有对其的引用。本Customer类使用的集合和方法来保持,检索和修改有关已被分配和/或完成客户作业的信息。

问题是,如果我想找出特定客户针对哪个客户,该Job怎么办?我只发现了相关的文章:http :
//www.ibm.com/developerworks/webservices/library/ws-tip-
objrel3/index.html

根据作者的实现,我将让Job构造函数接受一个Customer参数,并将其存储起来以便可以检索它。但是,我完全无法保证该模型可以保持 一致
。没有任何限制可以将相关客户设置为该工作不适合的客户,并将其添加到为其他人完成的客户中。任何帮助,将不胜感激。


问题答案:

没有100%的surefire方法可以保持完整性。

通常采用的方法是使用一种方法来构建关系,并使用相同的方法来构建另一方向。但是,正如您所说,这并不能阻止任何人弄乱它。

下一步将是使某些方法可打包访问,以便至少与您的代码无关的代码不会破坏它:

class Parent {

  private Collection<Child> children;

  //note the default accessibility modifiers
  void addChild(Child) {
    children.add(child);
  }

  void removeChild(Child) {
    children.remove(child);
  }
}

class Child {

   private Parent parent;
   public void setParent(Parent parent){
     if (this.parent != null)
       this.parent.removeChild(this);
     this.parent = parent;
     this.parent.addChild(this);
   }
}

实际上,您不会经常在课堂上为这种关系建模。取而代之的是,您将在某种存储库中查找所有子代的父母。



 类似资料:
  • 这是项目迁移 这是时间表 这样用户就可以迁移了 这是我的项目模型 这是我的时间表模型: 这是我的用户模型 现在,我从项目返回我的查询 这是可以的,但user_id用户在timesheets.user_id我不能得到它的时间表,并得到它 此控制器按时间表中的项目id返回项目和时间表,但时间表中的用户id我不知道如何将其输入系统

  • 在数据库表之间,绝大多数的关系很可能是一对多的关系,一个表中的记录有可能与另一个表中的许多记录相关。 创建一对多关系的过程与创建一对一关系完全相同。 让我们先通过单击设计 选项卡上清除布局 选项清除布局。 再添加另一个表,如以下屏幕截图所示。 点击保存图标并输入作为表名,然后转到关系视图。 点击显示表选项,然后选择两个表: 和 。如下所示 - 添加和并关闭显示表格对话框。 我们再次执行相同的操作过

  • 我在hibernate中搜索建立关系的各种可能性,遇到了下面的代码片段

  • 对于我正在构建的一个类似论坛的网站,我有PHP类'user'和'post‘。用户有一个帖子数组。如何与关系数据库中的连接相似?在“post”上有一个外键,指向一个“user”?这对我来说是有意义的,因为这是一对一的关系,而“user”到“post”是一对多的,就我所见。欢迎有任何想法-谢谢!

  • 我正在学习冬眠,只是有点困惑。