我有两个实体Question和QuestionLog。问题显然代表一个问题,QuestionLog代表用户可以针对特定问题报告的实体。例如,如果问题是错误的,质量不佳等。
现在,从我已阅读的内容中,聚合对象是唯一具有存储库的对象,并且,如果移除了附加到数据库中的问题,那么QuestionLog对象就不应在我的系统中,所以我认为Question将是聚合根。
这样做是否有意义?
如果我想要用户提交的QuestionLogs列表怎么办?然后,我是否将创建一个JPQL来检索用户已提交的所有QuestionLog,或者这会破坏预期的方式?我应该改为检索该特定用户附加了QuestionLogs的问题列表,然后遍历所有问题并显示每个QuestionLog的属性吗?
因为必须允许在Question类之外使用QuestionLog对象?我对限制和改变方式感到困惑。
最佳答案
因为QuestionLog
没有对应的Question
没有意义,所以您是对的-它不是聚合根。
与QuestionLog
有关的所有操作均应通过Question
汇总进行。
如果要为用户提供QuestionLog
列表,则需要在Question
集合上定义GetQuestionLogsForUser(user aUser)
方法。您不必为用户获得所有问题,而是通过汇总控制对QuestionLog
的访问。
您可以在聚合根目录之外使用QuestionLog
对象,但是对它的任何操作都应通过聚合根目录进行,特别是在持久性方面。