Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一个聚合根能否引用另一个聚合根的非聚合根?_Java_Domain Driven Design - Fatal编程技术网

Java 一个聚合根能否引用另一个聚合根的非聚合根?

Java 一个聚合根能否引用另一个聚合根的非聚合根?,java,domain-driven-design,Java,Domain Driven Design,对于此特定场景,我有三个实体: 问题(总根) 问题反馈(非聚合根) 问题反馈类别(聚合根) 既然QuestionFeedback在一个问题中,QuestionFeedbackCategory是否也可以保存QuestionFeedback对象的列表?或者QuestionFeedbackCategory是否只需要处理问题对象?如果问题和问题反馈都有类别,并且假设每个都只能有一个类别,我会这样建模 public class Question { ... CategoryId cat

对于此特定场景,我有三个实体:

  • 问题(总根)
  • 问题反馈(非聚合根)
  • 问题反馈类别(聚合根)

既然QuestionFeedback在一个问题中,QuestionFeedbackCategory是否也可以保存QuestionFeedback对象的列表?或者QuestionFeedbackCategory是否只需要处理问题对象?

如果问题和问题反馈都有类别,并且假设每个都只能有一个类别,我会这样建模

public class Question {
    ...
    CategoryId categoryId;
    Set<QuestionFeedback> feedback;
    ...
} 

public class QuestionFeedback {
    ...
    CategoryId categoryId;
    ...
} 

public class Category {
    CategoryId id;
    String name;
    String description;
}
公开课问题{
...
CategoryId CategoryId;
设置反馈;
...
} 
公开课堂提问与反馈{
...
CategoryId CategoryId;
...
} 
公共类类别{
类别id;
字符串名;
字符串描述;
}
您不必将AR本身“放入”另一个AR/VO中。您可以只引用其充当id的值对象


编辑:阅读这里提到的由三部分组成的文章。出于ORM思维,我曾经对如何对这些类型的关系建模感到困惑。

聚合根只能在以下情况下与外部通信:

  • 通过聚合内的事件
  • 通过构造函数注入

但在上述所有选项中,不允许使用引用,只能使用数组(水合对象)。

您能提供域的更详细描述吗?例如,问题反馈类别和问题或问题反馈之间的关系是什么?