当前位置: 首页 > 知识库问答 >
问题:

如何为具有子实体和父实体的实体创建域模型

阙辰龙
2023-03-14

我正在尝试为实体创建一个域模型(聚合),该实体包含子实体,并且可以有父实体。我们有实体包。我们可以把包裹分成更小的包裹(儿童)。每个分开的包都有一个父包。域的哪个部分应该包含域逻辑:聚合还是域服务?e、 g.聚合包有一个方法

split(splitParams: ISplitParameters): Package {
   // Split logic based on splitParams here
   const child = new Package(params);
   child.parent = this;
   this.children.push(child);
   return child;
}

分包还是原包?解决这个问题的正确方法是什么?

我希望我的域模型被ddd(应用程序和基础设施)的其他部分保持干净和幂等

共有1个答案

谢运良
2023-03-14

从您的示例中,似乎拆分Package实体上的一个方法。因此,无处不在的语言将包含指示Package可以“拆分”本身的语句。如果是这种情况,拆分方法应该在Package聚合中。

如果它是工厂方法或类方法,我建议将其放置在工厂中,而不是域服务中。只有在处理两个或多个聚合或非常复杂的业务逻辑时,才使用域服务。

如果子包只能通过parent.children访问,则返回原始包聚合是有意义的。您应该始终传递聚合对象,并通过聚合根访问子实体。

 类似资料:
  • 我在两个实体之间有双向或父/子关系: 我要选择没有的所有或的属性设置为的。 我使用的是。

  • 在我的项目中,我有两个领域模型。父实体和子实体。父对象引用子对象的列表。(如帖子和评论)这两个实体都有他们的spring数据JPA

  • 我有一个相当大的系统,它的规范是由子实体上的几个方法构建的。所以我有一个用户,他有一个宠物木偶,就像这个问题一样。我的关系是双向的,所以Pet在用户上也有多对一的关系,我正在努力将子实体上的规范转换为应用于父实体。 我查找的大多数问题都显示了如何在不同的实体上应用规范,或者在规范执行后获得不同的实体。这不是我想要的。 我试着写一个这样的方法: 但我不知道如何编写它(我尝试过使用Join,但没能“告

  • 假设我在前面有一个表单,它有常用的字段和下拉列表。在这些下拉列表中,用户可以选择一个选项,并且每个选项都链接到Spring data JPA中的一个实体; 下拉列表包含一些标签和对应实体的链接作为值。然后,这个值在POST-request中传递给我们希望创建的实体的PagingAndSorting存储库。 假设它是一个具有username的用户,并且他必须与其中一个办公室(也是一个实体)关联: 我

  • 我可能需要一些帮助,因为我被这些文件弄糊涂了: 我有一个JPA母公司: 和孩子: 如果我只是增加联系人,我希望JPA能够建立这种关系。 e、 g: 现在发生的是: 触点插入DB(良好) 使用providerX。联系人中的id。提供者列(良好) provider\u contact表中未显示任何关系条目 我知道我可以将联系人设置为提供者的属性<代码>providerX。联系人。添加(c)。。。回购。

  • 我正在尝试使用JPA注释设计我的实体类。 我正在努力做的是: 具有 ID、***电子邮件、密码、activation_key、active、role***的用户表 和许多类型的用户表。 student_table user_id第一名最后一名公司地址等 MENTOR user_id第一名最后一名DOB部门等 当用户注册时,根据他们的角色,他们将被分为两个表(用户、导师/学生) 当它们登录时,Man