在多对多情况下检索子类的信息(链接表)

时间:2016-04-04 10:57:58

标签: java

对于一个项目,我开发了一个能够向用户显示某些信息的应用程序。信息存储在数据库中,应用程序可以将它们混合在一起,以便对用户有意义。

数据库有点像这样:

名为Animal的(超级)类表,其中PK为AnimalId,列为Type。每种动物的独立表格,以及它们自己的特定列。每个表都有一个PK Id,如HorseIdDogId等。AnimalId是每个Ids的FK。我有另一个名为Owner的表,其中PK为OwnerNameOwner可以有多个动物,动物可以拥有多个所有者。因此,AnimalIdAnimal_Owner一起用于链接表OwnerName。应用程序显示动物列表,在用户选择一个动物后,应用程序显示链接所有者列表。这也是相反的方式。 在应用程序中,OwnerHorse等都是模型类,Animal是动物类的超类,IdType是超类属性。

在应用程序中,我尝试使用集合,以最小化对数据库的调用。因此,每次启动列表(例如动物列表)或从数据库中提取关联的所有者时,它们也存储在集合(HorseCollectionOwnerCollection等)中。每次需要特定信息时,应用程序首先检查其Collection,如果找不到该信息,它将执行对数据库的调用,然后将信息存储在Collection中。

以下问题是我挣扎的问题。从可用所有者列表中选择Owner后,我会从链接表(或关联的集合)中获得Id,但我不知道{{1}来自哪个动物表1}}实际上是。我可以调用数据库(表Id)来询问哪个Animal属于Type,但这意味着每次用户选择某个东西时,我都需要调用数据库;我希望尽可能避免。 我无法实例化Id的集合,并且使用与其他集合相同的原则,因为它是一个抽象类。

这件事的正确行动是什么?或者我的方法首先是错误的? 如果您需要更多信息或者我不够具体,请告诉我。

0 个答案:

没有答案
相关问题