这是我的应用程序:目的是根据错误添加记录(但并非所有错误都会导致添加新记录,只有主要错误会导致添加)。
每个会话都有很多错误,然后内部服务将管理此错误,以了解哪些是主要错误(以及哪些是“小”错误,我是指这个主要错误的隐含或相关或附加的)。

UML图:

因此,关于UML图,我需要您的帮助和建议,您认为这是最好的方法吗?我真的需要这里的子类吗(或者只是将两个不同的类Error和MainError会更好)?


因此,每个主要错误都有其相关错误的列表
一个主要错误不能成为另一个MainError列表的一部分
一个错误可能与许多主要错误相关
我正在使用JPA开发Java应用程序
一条记录仅与一个MainError和显然很多错误相关(因为每个MainError都有一个错误列表)


非常感谢你

最佳答案

我认为下图将满足并清楚地陈述您的要求。



这表示的是:


Session遇到零个或多个Errors
一个Error中遇到一个Session
Error必须是一个实例的实例,并且只能是其子类之一(“ complete”表示实例必须是子类的实例;“ disjoint”表示实例不能被多重分类,这在Java中还是不可能的。)
Main Error导致零个或多个Subordinate Errors
Subordinate Error由零个或多个Main Errors引起


这意味着每个Error最初都是作为Unclassified Error创建的,后来又分类为Main ErrorSubordinate Error

我不必为Record建模,因为它太模糊了,在讨论中没有添加任何内容。

如果要实现此模型,则关联结束将进行名称更改,该名称更改将在变为normalLookingCamelCaseForJava时保留语义。这是名称更改:


encounters将成为encounteredErrors并属于List<Error>类型
encountered in将成为类型encounteringSessionSession
causes将成为类型causedSubordinateErrorsList<SubordinateError>
caused by将成为类型causingMainErrorsList<MainError>


在JPA中,您可以使用鉴别符将所有错误类映射到一个表,这将使重新分类的性能更高。 (有关如何操作的想法,请参见changing entity type in JPA。)请注意,您可能希望将多对多关联映射到单独的关系数据库表。不过,这是一个单独的讨论。

10-08 15:20