我正在构建一个带有hibernate的spring mvc应用程序,以便与第三方数据库进行交互,该数据库使用传递闭包表来管理存储在vehicles
表中的数百万种不同类型车辆之间的嵌套子类型和超类型关系。还有一个vehicles_transitiveclosure
表,用于存储子类型和超类型的列表,以便用户可以提取特定vehicleid
的所有祖先或所有后代。 (汽车,面包车,卡车等。汽车有子类型轿车,货车等,有很多层次的嵌套。)
我在spring mvc app中创建了一个vehicle
实体,但我不知道如何在spring mvc中表示传递闭包表。
vehicles table
vehicleid(pk)
other fields
vehicles_transitiveclosure table
subtypeid(fk to vehicleid)
supertypeid(fk to vehicleid)
other fields
我犹豫是否将vehicles_transitiveclosure
视为联结表,因为vehicles_transitiveclosure
的每一行中都有一些其他字段。此外,它是车辆实体的自引用关系。我应该如何设置我的实体模型来表示这种关系呢?
传递闭包表的原因在于它可以快速访问给定车辆的所有祖先或所有后代。替代方案是一种资源非常密集的迭代算法,用于检索存储在其他表中的所有嵌套级别的子类型和超类型关系。