我有两个实体Question和QuestionLog。问题显然代表一个问题,QuestionLog代表用户可以针对特定问题报告的实体。例如,如果问题是错误的,质量不佳等。

现在,从我已阅读的内容中,聚合对象是唯一具有存储库的对象,并且,如果移除了附加到数据库中的问题,那么QuestionLog对象就不应在我的系统中,所以我认为Question将是聚合根。

这样做是否有意义?

如果我想要用户提交的QuestionLogs列表怎么办?然后,我是否将创建一个JPQL来检索用户已提交的所有QuestionLog,或者这会破坏预期的方式?我应该改为检索该特定用户附加了QuestionLogs的问题列表,然后遍历所有问题并显示每个QuestionLog的属性吗?

因为必须允许在Question类之外使用QuestionLog对象?我对限制和改变方式感到困惑。

最佳答案

因为QuestionLog没有对应的Question没有意义,所以您是对的-它不是聚合根。

QuestionLog有关的所有操作均应通过Question汇总进行。

如果要为用户提供QuestionLog列表,则需要在Question集合上定义GetQuestionLogsForUser(user aUser)方法。您不必为用户获得所有问题,而是通过汇总控制对QuestionLog的访问。

您可以在聚合根目录之外使用QuestionLog对象,但是对它的任何操作都应通过聚合根目录进行,特别是在持久性方面。

09-26 02:59