这是我的应用程序:目的是根据错误添加记录(但并非所有错误都会导致添加新记录,只有主要错误会导致添加)。
每个会话都有很多错误,然后内部服务将管理此错误,以了解哪些是主要错误(以及哪些是“小”错误,我是指这个主要错误的隐含或相关或附加的)。
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 Error
或Subordinate Error
。
我不必为Record
建模,因为它太模糊了,在讨论中没有添加任何内容。
如果要实现此模型,则关联结束将进行名称更改,该名称更改将在变为normalLookingCamelCaseForJava时保留语义。这是名称更改:encounters
将成为encounteredErrors
并属于List<Error>
类型encountered in
将成为类型encounteringSession
的Session
causes
将成为类型causedSubordinateErrors
的List<SubordinateError>
caused by
将成为类型causingMainErrors
的List<MainError>
在JPA中,您可以使用鉴别符将所有错误类映射到一个表,这将使重新分类的性能更高。 (有关如何操作的想法,请参见changing entity type in JPA。)请注意,您可能希望将多对多关联映射到单独的关系数据库表。不过,这是一个单独的讨论。