【问题标题】:Map different entities to the same table, always saving as one entity and loading depending on the context将不同实体映射到同一张表,始终保存为一个实体并根据上下文加载
【发布时间】:2010-11-14 11:34:06
【问题描述】:

我试图通过在不同的上下文中使用不同的实体来明确我的域。在数据库中,这些实体将被持久化在同一个表中。我有以下类层次结构:

  • 一个名为 Person 的抽象类(带有 id 和名称);
  • User 类,它扩展了 Person(带有登录名、密码和角色);
  • Vendor 类,它还扩展了 Person(带有一组交易);

这样,我在销售上下文中使用 Vendor 类,在登录上下文中使用 User 类。问题是每个人都被用户的管理上下文插入到系统中。这样,数据库中的每一行都具有值为“用户”的鉴别器列。我希望能够将数据加载为供应商实例(在销售上下文中工作时)并使用它来持久化销售对象(它将有一个供应商实例),但在数据库中,它指的是用户表.

简而言之:在数据库中,我有用户表,在我的域中可以表示两个实体:用户和供应商。它们必须始终作为用户持久存在,但必须根据其上下文加载。我如何在休眠中映射它,因为使用子类元素会使每个实例都作为用户加载(因为它们被保存为用户)?

【问题讨论】:

    标签: hibernate mapping domain-driven-design


    【解决方案1】:

    如果我正确理解了这个问题,那么使用继承是不可能的,Person 实例不能是 User Vendor 与 Hibernate,Person 要么是User 或(独家)Vendor

    您可以做的是将Person 映射到多个Role 并让UserVendor 扩展Role

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 2017-02-08
      • 2020-06-09
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      相关资源
      最近更新 更多